vuex对象数组中的数据改变但是视图没有同步更新?
1.存在vuex中的数据是对象数组类型
2.数据是根据不同id切换请求的,在actions处理
3.需要替换整个对象数组数据而不是数组中某一个字段
4.数据是成功切换了,就是视图无法更新,需要刷新才能更新
请教一下各位大佬,有没有遇到这种情况。
5.视图是弹出层的table数据,用的是iview组件的table,需要更新是一个下拉框options的数据,数据成功改变了但是无法触发视图options的数据更新
state: EnergySROptions: [], //格式是[{value: '',label: ''}]
mutations
setEnergySROptions(state, arr) {
console.log(arr, 'arr');
Vue.set(state, 'EnergySROptions', arr) //试过了无效
state.EnergySROptions = JSON.parse(JSON.stringify(state.EnergySROptions)) //试过了无效
}
actions
getEnergyOptData(context) {
let d = {
page: 1,
limit: 10,
flag: 'get_IntegrityProtAlgorithm_list',
sear: localRead('node'),
}
let url = "overall.cgi";
http.common.postByUrlAndData(url, d).then((res) => {
if (res) {
var optionData = res.data.enum_rows;
var EnergySROption = []
var optionArr = optionData[0].option;
optionArr.forEach((e) => {
EnergySROption.push({ value: e, label: e, })
})
context.commit('setEnergySROptions', EnergySROption)
}
})
}
回答:
很简单的一个窍门就是,你在 Vue2
中修改数组要么用 $set
,要么就用 list = newList
这样的形式去做。
如果你是修改了对象数组内部某一个对象的属性,Vue
是无法感知的。因为 Store
里面修改 State
是没有 $set
这个可选项的,就需要你去用 list = newList
这种方法,并在且组件中使用时选用下面两种方式派发:
computed:{ ...mapStates(
// 或者
...mapGetters(
回答:
1.this.$forceUpdate()
2.定义一个timer绑定在视图上面<div :key="timer">.....</div>,一点击就this.timer = new Date().getTime()
上面两种方式一般这种问题都可以解决
以上是 vuex对象数组中的数据改变但是视图没有同步更新? 的全部内容, 来源链接: utcz.com/p/933197.html