【问题标题】:How to access an action or make a dispatch from inside the store如何从商店内部访问操作或进行调度
【发布时间】:2021-03-18 02:03:19
【问题描述】:

这是商店中的一个通知模块,我想从商店本身触发 clear 方法,以在几秒钟后自动触发时关闭每个通知。我怎样才能做到这一点?

export const mutations = {
    success(state, message, isModal) {
        state.type = 'success';
        state.message = message;
        state.show = true;
        state.isModalMsg = isModal;
        setTimeout(()=>{
            actions.clear(state);
        },3000);
    },
    error(state, message, isModal) {
        state.type = 'danger';
        state.message = message;
        state.show = true;
        state.isModalMsg = isModal;
    },
    clear(state) {
        state.type = null;
        state.message = null;
        state.show = false;
        state.isModalMsg = false;
    }
};

export const actions = {
    success({ commit }, message) {
        commit('success', message);
    },
    error({ commit }, message) {
        commit('error', message);
    },
    clear({ commit }) {
        commit('clear');
    }

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-component vuex


    【解决方案1】:

    在success 操作中使用dispatch:

    success({ commit, dispatch }, message) {
        commit('success', message);
        setTimeout(() => {
            dispatch('clear');
        }, 2000)
    },
    

    【讨论】:

    • 我试过了,但它会抛出一个错误,提示“未定义调度”
    • 您是否准确地复制/粘贴了答案?您的代码在解构赋值中未显示 dispatch
    猜你喜欢
    • 1970-01-01
    • 2022-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2020-10-09
    • 1970-01-01
    • 2016-07-14
    • 2023-03-25
    相关资源
    最近更新 更多