2
我有一堆类绑定声明:计算财产不是从Vuex存储对象更新
:class="{active: isActive('status', status.id)}"
这里是上面提到的方法:
isActive: function (param, value) {
if (!this.activeFilters.hasOwnProperty(param) && value === 'all' && param !== 'type') {
return true;
}
...etc
}
...和计算性能的方法看在:
activeFilters() {
return this.$store.state.activeFilters;
},
这是在Vuex状态。
问题是,当点击具有上述类绑定的其中一个下拉列表时,这些属性不会更新。如果我导航到另一条路线然后返回,那么活动类已经应用得很好。我是否可以强制计算属性重新计算,以便该类立即应用?
我知道添加属性不会引发反应,but according to this,如果我用新鲜的物体代替物体,应保持反应性。那么这就是我在做什么:
state.activeFilters = query;
...替换对象。我很难过。
'this。$ forceUpdate();'是一种不好的做法。它甚至没有记录。我认为你做错了什么。这不是角度。你应该避免这一点。你能提供jsfidde/jsbin/codepen的完整例子吗? –
我的意思是基本上所有相关的东西都在上面 - 我从一个从状态复制的本地对象派生计算的属性。当状态改变时,计算的属性不会更新,直到我重新渲染 - 或者是由我新发现的(并且如您所说的未记录的)方法,或者通过路由离开然后返回。 – daninthemix
@daninthemix我认为如果可能的话,你应该找到尽可能使用计算属性的方法,而不是方法调用。方法调用AFAIK在它们的相关数据像计算道具一样变化时不会重新运行。例如,在这种情况下,'isActiveStatus'可以是一个包含'{key:true}'的字典,用于每个处于活动状态的“密钥”。然后你可以使用':style =“{active:isActiveStatus [status.id]}”'。 –