简体   繁体   English

突变不更新状态

[英]Mutation not updating state

I have my mutation committed, but the user state is not updated instead returns null我已提交更改,但用户状态未更新而是返回 null

I recieve data in mutation The axios call returns the user, but don't update state我收到变异数据 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);
        }
    }
})

What did I do wrong?我做错了什么? Thankyou for helping感谢您的帮助

Every asynchronous operations should be done in an actions, mutation should be as simple as it is possible.每个异步操作都应该在一个动作中完成,变异应该尽可能简单。 In this case you should move your logic from mutation to action.在这种情况下,您应该将您的逻辑从变异转移到行动。 Something like this:像这样的东西:

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);
            });
        }
    }
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM