javascript - 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 = []
}
}
解决方案
您只是在第二个示例中分配[]
给变量。content
这不影响state.content
。但是,如果这样做content.splice(0)
,则会清空state.content
Array。作业就是这样,作业。分配了非原始值的变量与非原始值相同。这并不意味着覆盖变量会消除非原始变量。它只是重新分配变量。
const state = {
content: [1, 2, 3]
}
const content = state.content;
content.splice(0);
console.log(content);
推荐阅读
- python - 扭曲的python scrapy失败类openssl图像没有下载
- html - 默认后如何在新网页上使用 react
- javascript - 如何在 JavaScript 代码中加载 PHP 文件?
- scala - 如何解决 Scala 调用中的 https 连接问题?
- java - 在 android studio 中解释来自 logcat 的错误消息
- javascript - 悬停在 Django 模板中的视频播放
- c++ - 优先级队列对对象排序不正确(用户定义的比较)
- javascript - tone.js - 为什么在 60 bpm 时 1 秒内有 192 个滴答声 (ppq)?
- vue.js - 从后端加载 i18n 翻译后的 vue 显示页面
- java - 如何直接从 /bin 运行 .jar 程序?