반응형
Vue가 vuex에서 가져오는 내 개체의 업데이트를 보지 못함
vuex에 getter를 통해 페이지에 액세스하는 개체가 있지만 vue에는 개체의 첫 번째 업데이트만 표시됩니다.오브젝트를 단계별로 수집하기 때문에 우선 오브젝트가 비어 있는 경우 vuex 상태(setUser)를 업데이트하고 페이지에 이 새로운 정보를 표시하도록 커밋합니다.그러나 커밋(addInfo)을 하나 더 사용하면 Vue DevTools를 사용하여 업데이트된 정보를 볼 수 있지만 두 번째 상태가 표시된 페이지에서 사용할 수 없습니다.
async fetchUser({ commit, state }) {
return new Promise(() => {
axiosInstance
.get(User(), {
headers: {
Authorization: 'Token ' + localStorage.getItem('token'),
},
})
.then((res) => {
commit('setUser', res.data);
})
.then(() => {
axiosInstance.get(UserID(state.userInfo.pk)).then((res) => {
axiosInstance.get(res.data.profile).then((res) => {
commit('addInfo', res.data);
console.log(state.userInfo);
});
});
})
.catch((err) => {
console.log(err);
});
});
}
userInfo라는 오브젝트가 페이지에 접속하고 있습니다.
computed: {
...mapGetters(['userInfo']),
},
created() {
this.$store.dispatch('fetchUser');
}
이 페이지에 있는 건 이거야
이 물체는 실제로 이렇게 보입니다.
이는 일반적인 반응성 문제이며 익숙해질 수 있는 여러 가지 솔루션이 있습니다.
기본적으로 Vue는 JS 제한으로 인해 개체에 대한 속성 추가를 감지할 수 없습니다. 초기 문제를 해결하기 위해state.userInfo
리액티브하게 하고 싶은 모든 키를 가질 수 있도록 설정하기만 하면 됩니다.null
,''
, 또는0
종류에 따라 다릅니다.
userInfo: {
//all my userInfo reactive keys
1stkey: '',
2ndkey: null,
3rdkey: 0,
...
100thkey: '',
}
또, 다음의 설정을 실시할 수도 있습니다.state.userInfo = null
채워진 시간을 감지할 수 있도록 처음에 null로 설정합니다.
Vue 문서에서 Vue Reactivity에 대한 자세한 내용은 여기를 참조하십시오.
언급URL : https://stackoverflow.com/questions/68762444/vue-doesnt-see-updates-of-my-object-getting-from-vuex
반응형
'programing' 카테고리의 다른 글
vue-router before 각 함수가 업데이트된 항목을 반환하지 않음 (0) | 2022.07.29 |
---|---|
Vue.js에서 소품 데이터를 다른 컴포넌트에 올바르게 전달하는 방법 (0) | 2022.07.29 |
Mockito는 모든 클래스 인수와 일치합니다. (0) | 2022.07.28 |
Vue-router가 페이지를 새로고침하면 상태가 상실됩니다.이 문제를 회피하려면 어떻게 해야 합니까? (0) | 2022.07.28 |
명령 플래그를 사용하여 향후 공유 라이브러리에서 중단점을 설정하는 방법 (0) | 2022.07.28 |