gpt4 book ai didi

javascript - Vue 看不到我的对象从 vuex 获取的更新

转载 作者:行者123 更新时间:2023-12-04 14:05:14 25 4
gpt4 key购买 nike

我在 vuex 中有一个对象,我通过 getter 进入页面,但是 vue 只看到对象的第一次更新。我逐步收集对象,所以首先它是空的然后我提交更新 vuex 状态 (setUser) 和 vue 在页面上显示这个新信息。但后来我又使用了一次提交 (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');
}

这是我在页面上得到的 this is what i get on the page

这就是物体的真实样子 this is how the object really looks like

最佳答案

这是一个常见的 react 性问题,有多种解决方案,您会习惯的:

由于 JS 的限制,基本上 Vue 无法检测对象的属性添加,要解决这个问题,您的初始 state.userInfo 应该包含您想要具有反应性的所有键,您可以将它们设置为 null''0,具体取决于类型。

userInfo: {
//all my userInfo reactive keys
1stkey: '',
2ndkey: null,
3rdkey: 0,
...
100thkey: '',
}

您还可以将您的 state.userInfo = null 初始设置为 null,这样您就可以检测它何时被填充。

在这里查看更多信息 Vue Reactivity on Vue docs

关于javascript - Vue 看不到我的对象从 vuex 获取的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68762444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com