vuex中的值变化 页面重新渲染_vuex中对象数组发生改变,页面渲染无法自动更新...

目前在state中有一个对象数组

arr = [

{

name: 'name1'

id: 1

},

{

name: 'name2'

id: 2

}

]

该对象数组存在于vuex中

如果我直接修改数组中的值,比如

let newArr = this.$store.state.arr

newArr[0].name = 'name111'

this.$nextTick(() => {

this.$store.commit('setArr', newArr)

})

因为此处为浅拷贝,所以其实原数组没有发生改变,只是改变了该数组下面对象的值

此时页面是可以更新渲染的

但由于我的业务场景,需要深拷贝(此处引入lodash辅助函数进行深拷贝),所以代码如下

let newArr = this.$lodash.cloneDeep(this.$store.state.arr)

newArr[0].name = 'name111'

this.$nextTick(() => {

this.$store.commit('setArr', newArr)

})

也就是说,此时的arr经过赋值已经变成了一个全新的数组

但此时子组件页面渲染无法再发生改变了,请问要如何解决这个问题?

如上述代码,目前:

this.$nextTick 是已经使用了的

页面动态渲染引用的值也是直接引用的 this.$store.state.arr

这是我百度到的解决方法,但是我已经是这样的了。

第一种情况下是适用的

但在第二种情况下,页面并没有得到更新进行重新渲染,请问要如何解决这个问题?

我打开vue扩展工具,发现在手动点击了这个按钮之后可以触发页面更新

可是我在mutation里输入了一句 console.log 的测试方法,输出语句是证实了mutation是被触发了的

但是为什么在扩展工具里手动触发mutation才会引起页面更新?不懂是什么道理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值