首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我修改数组的各个元素,则数组没有反应

如果我修改数组的各个元素,则数组没有反应
EN

Stack Overflow用户
提问于 2019-01-27 21:01:40
回答 2查看 69关注 0票数 0

这是Vuex商店中的一种变异方法。我可以执行已注释的代码并看到组件中的更改,但不能看到未注释的部分。

看起来只有当我用Array()再次初始化它时,状态才是反应性的。否则,我看不到组件中的更改,尽管我在最后一个console.log中看到的状态已经更改

代码语言:javascript
运行
复制
move(state: GameState, vector: Array<number>) {
                //const piece1: Piece = new Piece(7);
                //state.boardState = Array(4).fill(null).map(x => Array(4).fill(null));
                //state.boardState[0][0] = piece1;
                const size = state.boardState.length;
                const xComponent = vector[0];
                const yComponent = vector[1];
                for (let i = 0; i < size - 1; i++) {
                    const shifter = xComponent < 0 ? size - i - 1 : i;
                    const shifterPrev = xComponent < 0 ? size - i - 2 : i + 1;
                    for (let j = 0; j < size; j++) {
                        if (state.boardState[shifter][j] !== null) {
                            if (state.boardState[shifterPrev][j] === null) {
                                state.boardState[shifterPrev][j] = state.boardState[shifter][j];
                                state.boardState[shifter][j] = null;
                            } else if (state.boardState[shifterPrev][j].equals(state.boardState[shifter][j])) {
                                state.boardState[shifterPrev][j].increaseValue();
                                state.boardState[shifter][j] = null;
                            }
                        }
                    }  
                }
                console.log(state.boardState);
            }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-27 21:17:01

解决了。

https://vuejs.org/v2/guide/list.html#Array-Change-Detection

VueJS对突变没有反应,例如:

代码语言:javascript
运行
复制
vm.items[indexOfItem] = newValue

它必须按照如下方式完成:

代码语言:javascript
运行
复制
Vue.set(vm.items, indexOfItem, newValue)
票数 1
EN

Stack Overflow用户

发布于 2019-01-29 02:55:53

通常,在处理复杂的对象数组时,我会对数组执行splice操作,并将其替换为更新后的数组。Vue可以看到变化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54388390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档