Javascript Vuejs Vuex状态覆盖存储区外,无需变异或直接访问状态

Javascript Vuejs Vuex状态覆盖存储区外,无需变异或直接访问状态,javascript,vue.js,vuex,mutation,Javascript,Vue.js,Vuex,Mutation,映射()中Vuex覆盖的状态 当单击触发器按钮时,应为beahavior-计数始终为1 每次单击触发按钮时,当前行为是计数 如果我们查看一下控制台日志,就会发现getter返回的是变异状态 const store=新的Vuex.store({ 声明:{ 材料:[{ 计数:0 }] }, 突变:{}, 吸气剂:{ stuff:s=>s.stuff, } }) 新Vue({ el:“#vue”, 商店, 数据(){ 返回{ 决议:[] } }, 方法:{ 触发器(){ const stuff=th

映射()中Vuex覆盖的状态

当单击触发器按钮时,应为beahavior-
计数
始终为1

每次单击触发按钮时,当前行为是计数 如果我们查看一下控制台日志,就会发现
getter
返回的是变异状态

const store=新的Vuex.store({
声明:{
材料:[{
计数:0
}]
},
突变:{},
吸气剂:{
stuff:s=>s.stuff,
}
})
新Vue({
el:“#vue”,
商店,
数据(){
返回{
决议:[]
}
},
方法:{
触发器(){
const stuff=this.$store.getters.stuff
console.log(stuff)
const res=stuff.map(p=>{
p、 计数+=1
返回{
P
}
})
this.res=res
}
},
})

触发
{{res}}

这是意料之中的。Vuex只是JS虚拟机中的一个库-JS的规则适用于

  • const stuff=this.$store.getters.stuff
    -
    stuff
    现在是对现有对象(本例中为数组)的引用
  • stuff.map()
    迭代数组,将每个项作为
    p
    参数传递。如果
    p
    是一个对象,
    p
    是对Vuex中对象的引用-如果修改它,则是在Vuex存储中修改对象
  • 这是不好的,为了确保安全,您可以将Vuex设置为在Vuex中的数据丢失时抛出错误

    const store=新的Vuex.store({
    // ...
    严格:process.env.NODE_env!=“生产”
    })