日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue 监听map数组变化_vuex state中的数组变化监听实例

發布時間:2023/12/19 vue 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue 监听map数组变化_vuex state中的数组变化监听实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

首先,因為我有一個需求就是vue組件中有一組多選框,選中多選框的內容,要在另一個組件中進行視圖更新,這個就設計的兄弟組件之間的通信了,兄弟組件之前通信我首先選用的vuex這個解決辦法。

問題

vuex的state用來放數據,我就把數組放在了vuex中,然后設置了修改的函數。最終store.js中的代碼如下:

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

const state = {

messArray:[]

}

const mutations = {

modifyArray(state, obj){

state.messArray=obj.messArray

// Vue.$set(this,this.messArray,[...obj.messArray])

}

const actions={

modifyArr(context,obj){

context.commit('modifyArray',obj)

},

}

export default new Vuex.Store({

state,

mutations,

actions

})

然后在組建的data中,通過mapState映射過去:

//在使用事前必須引入這個

import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'

data() {

return {

...mapState(["messArray"]),

}

}

然后在watch中設置了監聽:

watch:{

messArray: function(val){

console.log("watch ChildA.vue "+val)

}

}

這個時候問題就出來了,雖然數組修改了,但是watch就是監聽不到。

解決辦法

在我搜索了一些網上的辦法之后,發現大部分我都用不來,最后只能巧妙的通過computed和getter解決了這個問題。

給剛才的store.js添加一個getter

const getters = {

messArray_get:state=>state.messArray,

}

然后在要監聽變化的組件中的computed中添加如下代碼:

...mapGetters(['messArray_get']),

然后在watch中這樣寫

watch:{

messArray_get : function(val){

console.log("messArray_get "+val)

}

}

大功告成,就是如此簡單巧妙。

以上這篇vuex state中的數組變化監聽實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

時間: 2019-11-06

總結

以上是生活随笔為你收集整理的vue 监听map数组变化_vuex state中的数组变化监听实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。