首页 > 解决方案 > Vuex - 为什么 JS 变量不能按预期工作?

问题描述

问题

JS 变量在 Vuex 商店中无法按预期工作。

假设我们要清除一个名为的数组content

state: {
  content: [1, 2, 3]
}

我们可以直接这样做:

state.content = []

或者如果它被多次引用,我们会先把它放在一个变量中,然后再修改它,像这样:

let content = state.content
content = []

但是由于某种原因,第二种方法不起作用。为什么?

代码

演示:https ://jsfiddle.net/dke68gwz/

state: {
  content: [1, 2, 3]
},
mutations: {
  clearContent(state) {
    // Method 1 - works
    state.content = []

    // Method 2 - doesn't work
    // let content = state.content
    // content = []
  }
}

标签: javascript

解决方案


您只是在第二个示例中分配[]给变量。content这不影响state.content。但是,如果这样做content.splice(0),则会清空state.contentArray。作业就是这样,作业。分配了非原始值的变量与非原始值相同。这并不意味着覆盖变量会消除非原始变量。它只是重新分配变量。

const state = {
  content: [1, 2, 3]
}
const content = state.content;
content.splice(0);
console.log(content);


推荐阅读