2
나는 클래스 바인딩 문 무리가 있습니다계산 된 속성은 Vuex 저장소 개체에서 업데이트되지
isActive: function (param, value) {
if (!this.activeFilters.hasOwnProperty(param) && value === 'all' && param !== 'type') {
return true;
}
...etc
}
... 그리고 계산 된 재산 방법 : 여기
:class="{active: isActive('status', status.id)}"
위에서 언급 된 방법의를 찾고 있습니다 :
activeFilters() {
return this.$store.state.activeFilters;
},
Vuex 상태에 있습니다.
위의 클래스 바인딩이있는 드롭 다운 중 하나를 클릭하면 이러한 속성이 업데이트되지 않습니다. 다른 경로로 이동 한 다음 다시 돌아 오는 경우 활성 클래스가 올바르게 적용되었습니다. 계산 된 속성을 강제로 재 계산하여 클래스가 즉시 적용될 수 있습니까?
속성을 추가해도 반응성이 발생하지 않는다는 것을 알고 있습니다. but according to this, 내가 새 것으로 대체하면 반응성이 유지되어야합니다. 여기에 제가하고있는 일이 있습니다 :
state.activeFilters = query;
... 개체를 교체하십시오. 나는 곤두박질 친다.
'this. $ forceUpdate();'나쁜 연습입니다. 심지어 문서화되지도 않았습니다. 나는 네가 뭔가 잘못하고 있다고 생각해. 각도가 아니야. 당신은 이것을 피해야합니다. jsfidde/jsbin/codepen에 대한 완전한 예제를 제공 할 수 있습니까? –
기본적으로 위의 모든 관련 항목은 - 상태에서 복사 된 로컬 객체에서 계산 된 속성을 파생합니다. 상태가 변경되면 계산 된 속성이 새로 렌더링 될 때까지 업데이트되지 않습니다. 새로 발견 된 (그리고 문서화되지 않은 방식으로) 메서드를 사용하거나 멀리 떨어진 다음 다시 라우팅합니다. – daninthemix
@daninthemix 가능한 경우 메서드 호출 대신 계산 된 속성을 사용할 수있는 방법을 찾아야한다고 생각합니다. 메서드 호출 인 AFAIK는 계산 된 소품처럼 종속 데이터가 변경 될 때 다시 실행되지 않습니다. 예를 들어,이 경우 isActiveStatus는 활성화 된 각'key '에 대해'{key : true}'를 포함하는 사전이 될 수 있습니다. 그런 다음': style = "{active : isActiveStatus [status.id]}"'를 사용할 수 있습니다. –