猿问

vuex 快捷替换数组中的某项

目前有项需求,即是 一个用来渲染的保存的vuex的数组里面, 基础结构是这样的 [{'id':1, 'loadState': 'prepare'},......{'id':n, 'loadState': 'prepare'}]...

我这边通过es6的数组的find方法 找到满足数组里面的id与 我从后台获得的id 相同的某项,把里面的loadState 改为 'loading', 再提交到原来的数组中去。
问下如果是深复制的话,是否需要复制原来的整个数组 ,再把对应项拿出来修改,再mutation?
如果这样提交会不会整个页面的数组都会有一闪而过的景象?

或者有什么方法只改变其中的某项


holdtom
浏览 1238回答 2
2回答

缥缈止盈

你在纠结视图层引起的变化差别的时候,建议先看结果且看看diff算法原理,这样可以根据diff来优化你的代码。

繁华开满天机

1.你用Array.prototype.splice来改变你想改变的特定性是不会有问题的,页面也不会出现闪动。因为vue更新的时候是通过dom diff来做的,只会更新需要更新的部分2.你这样用数组来保存,查找的时间复杂度是O(n),可以维护一个id和数组下标的对应关系,把时间复杂度降到O(1)
随时随地看视频慕课网APP
我要回答