最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

案例

需求:在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

說明

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

Vuex state值更改但是getters未更新

實(shí)現(xiàn)效果

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

state:

 seatList: {},//初始席別

最后state結(jié)果:

seatList: {
  '1':[{
  code:"101",
  name:'經(jīng)濟(jì)艙'
  },{
  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è)置為空然后再賦值,否則不更新。

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

相關(guān)文章

  • vue+element?ui表格添加多個(gè)搜索條件篩選功能(前端查詢)

    vue+element?ui表格添加多個(gè)搜索條件篩選功能(前端查詢)

    這篇文章主要給大家介紹了關(guān)于vue+element?ui表格添加多個(gè)搜索條件篩選功能的相關(guān)資料,最近在使用element-ui的表格組件時(shí),遇到了搜索框功能的實(shí)現(xiàn)問題,需要的朋友可以參考下
    2023-08-08
  • 深入分析element ScrollBar滾動組件源碼

    深入分析element ScrollBar滾動組件源碼

    這篇文章主要介紹了element ScrollBar滾動組件源碼深入分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 深入探討Vue?3中的組合式函數(shù)編程方式

    深入探討Vue?3中的組合式函數(shù)編程方式

    Vue?3中引入了組合式函數(shù)編程方式,可以更好地實(shí)現(xiàn)代碼的復(fù)用和可維護(hù)性。通過定義可組合的函數(shù),可以將組件的邏輯和狀態(tài)進(jìn)行拆分和組合,實(shí)現(xiàn)更靈活的代碼組織方式。同時(shí),組合式函數(shù)也支持響應(yīng)式數(shù)據(jù)和生命周期鉤子函數(shù),更加貼近Vue開發(fā)的實(shí)際場景
    2023-05-05
  • vue3使用echarts繪制折線圖的代碼示例

    vue3使用echarts繪制折線圖的代碼示例

    這篇文章主要為大家學(xué)習(xí)介紹了Vue3如何使用echarts實(shí)現(xiàn)繪制折線圖,文中有詳細(xì)的示例代碼供大家參考,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • vue3清空let?arr?=?reactive([])的實(shí)現(xiàn)示例

    vue3清空let?arr?=?reactive([])的實(shí)現(xiàn)示例

    本文主要介紹了vue3清空let?arr?=?reactive([])的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Vue 中 createElement 使用實(shí)例詳解

    Vue 中 createElement 使用實(shí)例詳解

    Vue 提供了createElement 來創(chuàng)建虛擬dom,方便我們來函數(shù)化的方式來定義復(fù)雜的組件結(jié)構(gòu),這篇文章主要介紹了Vue 中 createElement 使用詳解,需要的朋友可以參考下
    2022-10-10
  • vue改變數(shù)據(jù)后數(shù)據(jù)變化頁面不刷新的解決方法

    vue改變數(shù)據(jù)后數(shù)據(jù)變化頁面不刷新的解決方法

    這篇文章主要給大家介紹了關(guān)于vue改變數(shù)據(jù)后數(shù)據(jù)變化頁面不刷新的解決方法,vue比較常見的坑就是數(shù)據(jù)(后臺返回)更新了,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • vue3獲取、設(shè)置元素高度的代碼舉例

    vue3獲取、設(shè)置元素高度的代碼舉例

    這篇文章主要給大家介紹了關(guān)于vue3獲取、設(shè)置元素高度的相關(guān)資料,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單易懂,需要的朋友可以參考下
    2024-08-08
  • vue使用H5的audio標(biāo)簽問題

    vue使用H5的audio標(biāo)簽問題

    這篇文章主要介紹了vue使用H5的audio標(biāo)簽問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • elementui[el-table]toggleRowSelection默認(rèn)多選事件無法選中問題

    elementui[el-table]toggleRowSelection默認(rèn)多選事件無法選中問題

    這篇文章主要介紹了elementui[el-table]toggleRowSelection默認(rèn)多選事件無法選中問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

丰台区| 肥乡县| 滨州市| 中宁县| 亚东县| 靖远县| 达日县| 屏东县| 钦州市| 荥经县| 青龙| 南丹县| 宜阳县| 稷山县| 安国市| 浦县| 会东县| 和政县| 马龙县| 靖州| 吉水县| 蓝田县| 大荔县| 石嘴山市| 通河县| 黄平县| 福泉市| 武汉市| 青冈县| 石柱| 青铜峡市| 东辽县| 公主岭市| 常德市| 海口市| 彭阳县| 营口市| 榆林市| 繁峙县| 陇川县| 榆树市|