变异不更新状态

问题描述 投票:1回答:1

我已提交变异,但用户状态未更新而是返回null

我在变异中接收数据axios调用返回用户,但不更新状态

export default new Vuex.Store({
    state: {
        user: null
    },
    getters: {
        getUser: state => {
            return state.user;
        }
    },
    mutations: {
        setUser(state, user) {
            let url = domain + "user";
            axios
                .get(url, {
                    params: {
                        uuid: user.uid
                    }
                })
                .then(res => {
                    Vue.set(state, user, res.data)
                      // tried    state.user = res.data

                })
                .catch(err => {
                    console.log(err);
                });
        }
    },
    actions: {
        setUser(context, user) {
            context.commit('setUser', user);
        }
    }
})

我做错了什么?谢谢你的帮忙

vue.js vuex
1个回答
1
投票

每个异步操作都应该在一个动作中完成,变异应该尽可能简单。在这种情况下,您应该将逻辑从突变转移到行动。像这样的东西:

export default new Vuex.Store({
    state: {
        user: null
    },
    getters: {
        getUser: state => {
            return state.user;
        }
    },
    mutations: {
        setUser(state, user) {
            Vue.set(state, 'user', user)
        }
    },
    actions: {
        getUser(context, user) {
            let url = domain + "user";
            axios.get(url, {
                params: {
                    uuid: user.uid
                }
            }).then(res => {
                context.commit('setUser', res.data)

            }).catch(err => {
                console.log(err);
            });
        }
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.