반응형
상태 업데이트에도 불구하고 vuex 구성 요소가 업데이트되지 않는 이유
페이지를 로드할 때 항목 목록을 가져온다.
원천
프로젝트의 출처는 온라인:
optboxes
페이지;- 저장(저장, 동작, 돌연변이, 게이터)
optboxes
페이지
HTTP 요청은 적절한 데이터 전송 및 반환:
created(){
this.getOptboxes();
},
components: {
'optbox': OptboxComponent,
},
methods: {
getOptboxes() {
optboxes.all().then((response) => {
this.setOptboxes(response.data.output);
}).catch(() = > {
this.no_optbox_message = 'there is no optbox';
logging.error(this.$t('optboxes.get.failed'))
});
}
},
vuex: {
actions: { setOptboxes: actions.setOptboxes},
getters: { optboxesList: getters.retrieveOptboxes}
}
나는 다음과 같이 결과를 반복하고 있다.
<div v-for="optbox in optboxesList" class="panel panel-default">
<optbox :optbox="optbox"></optbox>
</div>
저장하다
const state = {
optboxes: {
/*
'akema': {
hostname: "192.168.2.23",
id: "akema",
printers: [
{
description: "bureau",
destination_port: 9100,
forward: "normal",
hostname: "1.2.3.4",
id: 0,
listening_port: 9102
}
]
}
*/
}
};
질문
다른 페이지로 바꿔서 돌아오면 목록이 뜬다.나는 또한 Vuex 확장으로 내가 주를 약속하고 변화를 볼 수 있다는 것을 알아챘다.
변경 사항이 자동으로 적용되지 않는 이유
Change Detection 주의사항으로 인해 데이터 구조를 변경해야 했다.
JavaScript의 제한으로 인해 Vue.js는 어레이에 대한 다음과 같은 변경 사항을 감지할 수 없다.
- 예를 들어, 인덱스로 항목을 직접 설정할 때
vm.items[0] = {};
- 예를 들어 배열의 길이를 수정할 때
vm.items.length = 0
.
저장하다
optboxes
이제 배열이다.
const state = {
optboxes:[]
}
그런 다음 어레이를 편집하도록 내 돌연변이를 업데이트하십시오.
반응성의 문제가 아닐까?!setOptbox 돌연변이가 vue에 의해 선택되지 않는 것 같아.
setOptboxes(state, optboxes) {
for (var optbox of optboxes) {
state.optboxes[optbox.id] = optbox;
}
}
여기서 그것에 대해 읽을 수 있다.
https://vuejs.org/guide/list.html#Caveats
https://vuejs.org/guide/reactivity.html
문서 솔루션은 다음을 사용한다.
state.optboxes.$set(optbox.id, optbox);
보기 업데이트를 트리거할 수 있는.
사용.Vue.set
나를 위해 그것을 쓰세요.여기 좀 봐.
반응형
'programing' 카테고리의 다른 글
Vuex createPersistedState 부분 지속이 작동하지 않음 (0) | 2022.05.05 |
---|---|
외부 키워드는 무슨 뜻인가? (0) | 2022.05.05 |
링커 오류: "링크가 완료되지 않아 링커 입력 파일이 사용되지 않음", 해당 파일의 함수에 대한 정의되지 않은 참조 (0) | 2022.05.04 |
vue 구성 요소에서 슬릭 슬라이더가 작동하지 않음 (0) | 2022.05.04 |
vuej에서 여러 하위 구성 요소에서 발생하는 이벤트를 캡처할 수 있는 방법이 있는가? (0) | 2022.05.04 |