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]}」'。 –