亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vuex中如何getters動態(tài)獲取state的值

 更新時間:2022年08月31日 17:09:31   作者:Juice-Dreamer  
這篇文章主要介紹了Vuex中如何getters動態(tài)獲取state的值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Vuex getters動態(tài)獲取state的值

在做項目時,getters里有很多冗余代碼,但是仔細一看可以根據(jù)參數(shù)來解決,于是決定使用傳參來進行獲取,減少代碼冗余。

案例

需求:在getters里能夠根據(jù)值動態(tài)獲取到people的元素。經(jīng)過多次嘗試,最終得到下面的代碼。 

state.js代碼如下:

export default {
  people: [
    {
      name: 'zs',
      age: 14
    },
    {
      name: 'ss',
      age: 24
    },
    {
      name: 'gh',
      age: 34
    }
  ]
}

getters.js代碼如下:

const getters = {
// 根據(jù)index獲取state.person[index]
  getPerson: function (state) {
    // console.log(state)
    return function (index) {
      return state.people[index]
    }
  }, 
  // 獲取state.person[0]
  getPerson1: function (state) {
    // console.log('getPerson1:', state.people[0]) 
    // console.log(typeof getters.getPerson) return function
    // console.log(getters.getPerson(state)(1))  注: state不傳過去的話,getPerson()找不到state
    return getters.getPerson(state)(1) // 成功獲取state.person[0]
  },
  getPerson2: function (state) {
    return getters.getPerson(state)(2) // 成功獲取到state.person[1]
  }
}
export default getters

說明

因為項目中數(shù)據(jù)還要響應(yīng)式,因此我使用setInterval方法來模擬是否會實時更新,事實證明可以,因此可以推薦用這種方法。

Vuex state值更改但是getters未更新

實現(xiàn)效果

選擇一種交通工具則出現(xiàn)對應(yīng)的席別列表。

state:

 seatList: {},//初始席別

最后state結(jié)果:

seatList: {
  '1':[{
  code:"101",
  name:'經(jīng)濟艙'
  },{
  code:"102",
  name:'公務(wù)艙'
  }],
  '2':[{
    code:"201",
    name:'商務(wù)座'
  },
  ...
  ]
},

getters:

seatListItem:(state)=>(key)=>{
    let list=state.common.seatList;
    return list[key]?list[key]:[]
  },

mutations:

SET_SEAT_LIST: (state,data) => {
      state.seatList = null;//問題出現(xiàn)在此處,對象要先置為null再賦值就可
      state.seatList= data;
    },

template:

<!-- 席別-->
          <el-select v-if="scope.row.vehicleCode&&seatListItem(scope.row.vehicleCode)" placeholder="" size="small"
                     class="selectWidth"
                     @change="handleChangeSeatType($event,scope.$index,receiptTableArr)"
                     v-model="scope.row.seatName"
                     :disabled="types == 'look'||!scope.row.vehicleCode"
                     v-bind:class="[types == 'look'?'numberStyleLocck':'','clearCursor']">
            <el-option
              v-for="(item,itenIndex) in seatListItem(scope.row.vehicleCode)"
              :label="item.value"
              :value="item"
              :key="itenIndex"
            ></el-option>
          </el-select>

computed:

computed: {
      ...mapState({
        vehicleList: state => state.vehicleList,//交通工具
        seatList: state => state.seatList,//席別
      }),
      ...mapGetters(['seatListItem'])
    },

methods:

getVehicleList(other){
      getVehicleSeatList({
        type:'JT',
        other 
      }).then((res)=>{
        if(res.data.code==200){
          const data = res.data.data;
          let seatList= this.$store.state.seatList;
              if(!seatList[other]){
                seatList[other]=data
              }
              this.$store.commit('SET_SEAT_LIST', seatList, params.other);
        } else {
          this.$message.warning('獲取交通工具席別失敗');
          return false
        }
      })
    },

最后發(fā)現(xiàn),在mutations中要先將state設(shè)置為空然后再賦值,否則不更新。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue項目不能使用localhost訪問的解決

    vue項目不能使用localhost訪問的解決

    這篇文章主要介紹了vue項目不能使用localhost訪問的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 在vue項目創(chuàng)建的后初始化首次使用stylus安裝方法分享

    在vue項目創(chuàng)建的后初始化首次使用stylus安裝方法分享

    下面小編就為大家分享一篇在vue項目創(chuàng)建的后初始化首次使用stylus安裝方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • webstrom Debug 調(diào)試vue項目的方法步驟

    webstrom Debug 調(diào)試vue項目的方法步驟

    這篇文章主要介紹了webstrom Debug 調(diào)試vue項目的方法步驟,詳細的介紹了兩種調(diào)試vue項目的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue服務(wù)器代理proxyTable配置如何解決跨域

    vue服務(wù)器代理proxyTable配置如何解決跨域

    這篇文章主要介紹了vue服務(wù)器代理proxyTable配置如何解決跨域問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vs-code/WebStorm中構(gòu)建Vue項目的實現(xiàn)步驟

    Vs-code/WebStorm中構(gòu)建Vue項目的實現(xiàn)步驟

    本文主要介紹了在Vs-code/WebStorm中構(gòu)建Vue項目,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-08-08
  • Vue.js系列之vue-router(上)(3)

    Vue.js系列之vue-router(上)(3)

    這篇文章主要介紹了Vue.js系列之vue-router(上)(3)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • vue組件初學(xué)_彈射小球(實例講解)

    vue組件初學(xué)_彈射小球(實例講解)

    下面小編就為大家?guī)硪黄獀ue組件初學(xué)_彈射小球(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue實現(xiàn)純前端表格滾動分頁加載

    vue實現(xiàn)純前端表格滾動分頁加載

    這篇文章主要為大家詳細介紹了vue實現(xiàn)純前端表格滾動分頁加載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 詳解Vue的computed(計算屬性)使用實例之TodoList

    詳解Vue的computed(計算屬性)使用實例之TodoList

    本篇文章主要介紹了詳解Vue的computed(計算屬性)使用實例之TodoList,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Vue不能觀察到數(shù)組length的變化

    Vue不能觀察到數(shù)組length的變化

    因為vue的響應(yīng)式是通過 Object.defineProperty 來實現(xiàn)的,但是數(shù)組的length屬性是不能添加getter和setter,所有無法通過觀察length來判斷。這篇文章主要介紹了為什么Vue不能觀察到數(shù)組length的變化,需要的朋友可以參考下
    2018-06-06

最新評論