Vue / Vuex状态更改不影响父母

时间:2020-03-28 04:30:47

标签: vue.js state vuex

我在子组件中有一个输入。其值在那里更改并存储在状态中。父组件将该值用于某些逻辑。当我更改孩子的值时,我以为父母会检测到状态变化。我只有在父母本身进行更新时才能找到更改后的数据。

我是Vue和状态管理的新手。我认为状态更改将在任何使用变量的地方(父母或孩子)立即反映出来。我有点以为状态就像无处不在的以太,如果将其映射/导入到一个组件中,它将渗透到一切。

1 个答案:

答案 0 :(得分:0)

在Vuex存储中更改对象的子项时,有时Vue无法正确显示该子项。当我尝试监视存储对象并且该对象的某些子键值发生更改时,我遇到了此问题。我通过复制整个对象来解决了这个问题;

全局声明此克隆功能,

_cloneObj: function(obj){
   return JSON.parse(JSON.strigify(obj));
}

现在,只要更改存储中的值,就可以使用此功能,例如

CHANGE_STORE: (state,newValue) =>{
   let obj =  _cloneObj(state.your_object); // this will give you clone of the store obkect
   obj.your_key = newValue; // change the value you want
   state.your_object = obj; // set the value back to store
}

商店会将其视为整个对象的变化,并将其无处不在。