반응형
계산된 루프 생성에서 getter 반환
스토어에서 계산된 액션을 호출하여 실행하고 있으며, getter를 반환하면 루프가 생성됩니다.
HTML
{{loadedProjects}}
계산한
computed: {
loadedProjects() {
this.$store.dispatch("getProjects");
return this.$store.getters.loadedProjects;
}
}
가게
import Vuex from "vuex";
import axios from "axios";
const createStore = () => {
return new Vuex.Store({
state: {
loadedProjects: []
},
mutations: {
setProjects(state, projects) {
state.loadedProjects = projects
}
},
actions: {
getProjects(vuexContext) {
console.log("hello1")
return axios.get("THE API URL")
.then(res => {
console.log("hello2")
vuexContext.commit("setProjects", res.data);
})
.catch(e => console.log(e));
}
},
getters: {
loadedProjects(state) {
return state.loadedProjects;
}
}
});
};
export default createStore;
작업을 호출하여 상태를 채운 후 상태를 반환하여 데이터를 렌더링해야 합니다.
계산된 속성 내에서 API 호출을 하는 스토어 액션을 사용하는 이유는 무엇입니까? 트리거하고 싶을 수 있습니다.loadedProjects
change ?...syslog 속성은 비동기적이지 않으므로 어느 쪽이든 응답을 받기 전에 리턴 라인이 실행됩니다.vue-async-calculated 플러그인을 시도하거나 콜을 사용할 수 있습니다.created
어떤 것이 더 나은 방법인지, 그리고 당신이 할 수 있는 계산된 속성을 사용할 필요가 없습니다.{{ $store.getters.loadedProjects }}
템플릿으로
계산된 속성은 부작용이 없어야 한다(예: 저장 조치 호출, 데이터 변경 등).그렇지 않으면 트리거된 부작용이 구성 요소의 재렌더링 및 계산된 성질의 재페치 가능성으로 이어질 수 있습니다.즉, 무한 루프(infinite loop)
코드를 이렇게 바꿨어요.
created: function () {
this.$store.dispatch("getProjects")
},
computed: {
loadedProjects() {
return this.$store.getters.loadedProjects
}
}
지금은 동작하고 있습니다만, 알고 싶습니다만, 계산기 내부에서 동작하고 있는 것도 문제가 있고, 그것이 최선의 해결책인지도 의문입니다.도움이 필요하신가요???
언급URL : https://stackoverflow.com/questions/57613089/returning-a-getters-in-a-computed-create-a-loop
반응형
'programing' 카테고리의 다른 글
C API 설계:누가 할당해야 합니까? (0) | 2022.07.05 |
---|---|
버스 오류란 무엇입니까?세그멘테이션 장애와 다른가요? (0) | 2022.07.05 |
Vue-router 오류:TypeError: 정의되지 않은 속성 'matched'를 읽을 수 없습니다. (0) | 2022.07.05 |
일반적인 스테이트 머신의 구현 패턴이 있습니까? (0) | 2022.07.05 |
정수를 포함하는 ArrayList를 원시 int 배열로 변환하는 방법 (0) | 2022.07.05 |