vue2.x中遇到的問題以及如何向computed方法中傳參

從頭開始學(xué)習(xí)vue2.x

閱讀此文需要具備基礎(chǔ)的前端功底。。。比如說知道v-bind怎么動態(tài)更改class,style。知道vue-cli創(chuàng)建的vue項目的目錄結(jié)構(gòu),以及每個vue文件的區(qū)域塊

之前做安卓,現(xiàn)在做前端。自學(xué)vue。不得不吐槽下vue文檔是真難讀懂。。。??赡苁巧偌訕?biāo)點符號,也可能是vue的文檔是面向初級前端的。。。
回歸正題,自己在做demo的時候,遇到一些問題。比如,文檔與實際寫法有一定出入。


vue2.x官方文檔例圖

在實際項目中可能需要這樣寫:


實際demo中寫法

對,data(){ return { } }這樣的寫法。
現(xiàn)在有這樣一個場景
請實現(xiàn)這樣的效果

導(dǎo)航欄使用的 v-for 語句創(chuàng)建(就是這一串標(biāo)題都放到一個數(shù)組里面給循環(huán)出來了)。第0,3,7的字體改變,并且標(biāo)紅,但是并沒有,點擊鼠標(biāo)懸浮的背景樣式(就是紅橙色的樣式)。
個人想法是,動態(tài)綁定class。使用vue中v-bind方法::class = "calcFun(index)"之后再computed函數(shù)中寫上方法。因為沒看到文檔是傳參的操作,困擾了半天,最后搜索到了。具體寫法是這樣的:


computed傳參操作

這樣就可以將for循環(huán)的index給放入到具體操作的函數(shù)中了。具體代碼如下:

一部分html布局,動態(tài)更改該class

     <!--      左側(cè)導(dǎo)航欄-->
      <div class="sec_left boxShadow">
        <div class="sec_text_bg">
          <label class="sec_text_lb"
                 v-for="(item,index) in textIndex"
                 :key="index"
                 @click="changeStyleClick(index)"
                 :class="calcFun(index)">{{ item.textTitle }}</label>
        </div>
      </div>

data數(shù)據(jù)

 data () {
    return {
      isWhich: 1,
      textIndex: [
        { textTitle: '個人中心' },
        { textTitle: '賬戶總覽' },
        { textTitle: '存管信息' },
        { textTitle: '資金管理' },
        { textTitle: '充值' },
        { textTitle: '提現(xiàn)' },
        { textTitle: '資金記錄' },
        { textTitle: '會員信息' },
        { textTitle: '基本信息' }
      ]
    }
  }
 computed: {
    //  必須這樣寫才能動態(tài)傳遞參數(shù)。稍后寫一個簡書記錄一下
    calcFun () {
      // eslint-disable-next-line vue/no-side-effects-in-computed-properties
      this.isWhich = this.$store.state.mineStateTip
      return function (index) {
        let v = ''
        switch (index) {
          case 0:
            v = 'tabTitle'
            break
          case 3:
            v = 'tabTitle'
            break
          case 7:
            v = 'tabTitle'
            break
          default:
            v = (this.isWhich === index ? 'tabContent' : 'tabContentHover') + ' tabNor'
            break
        }
        return v
      }
    }
  }

下面是css樣式

.tabTitle {
  font-size: 18px;
  font-weight: bold;
  color: #ff656b;
}

.tabContent {
  color: white;
  background: linear-gradient(315deg, #ffbe7e, #ff656b);
}

.tabNor {
  display: flex;
  flex-flow: column;
  justify-content: center;
}

.tabContentHover:hover {
  color: white;
  background: linear-gradient(315deg, #ffbe7e, #ff656b);
}

請忽略click點擊方法。
以上就是問題記錄。謝謝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 您將在本文當(dāng)中了解到,往網(wǎng)頁中添加數(shù)據(jù),從傳統(tǒng)的dom操作過渡到數(shù)據(jù)層操作,實現(xiàn)同一個目標(biāo),兩種不同的方式....
    itclanCoder閱讀 26,244評論 1 12
  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,618評論 0 25
  • 1、active-class是哪個組件的屬性?嵌套路由怎么定義?答:vue-router模塊的router-lin...
    jane819閱讀 1,827評論 0 15
  • 事件輪詢
    鴻澤云碼閱讀 300評論 0 1
  • 前沿 置身世外只為暗中觀察?。?!Hello大家好,我是魔王哪吒!重學(xué)鞏固你的Vuejs知識體系,如果有哪些知識點遺...
    lessonSam閱讀 1,230評論 0 13

友情鏈接更多精彩內(nèi)容