首页 文章

Vuex:从行动中调用getter

提问于
浏览
1

调度/动作是否有办法在其内部调用getter?

mutations: {
    setData(state, data) {
        state.data = data;
    }
}
actions: {
    sendDataToServer({ commit }, payload) {
        // call getter (data) and assign to variable
        // do async functions from the data returned
    }
},
getters: {
    getAppData: state => () => {
        return state.data;
    }
}

那么这里最好的做法是什么?使用变异来改变状态,然后获取状态并将其传递给动作,然后执行异步功能或者是否需要重构我的实现?

call mutation - >通过getter获取数据 - >调用action

要么

在动作上做所有事情(对动作做突变并在不需要getter的情况下执行动作/异步方法)?

1 回答

  • 1

    在操作中,您会看到第一个参数中包含 {commit} . 同样,您可以传递 {commit, state} . 这样,您就可以直接访问state.data .

    我想在你的例子中,你会想要做这个动作,因为你可以使用 commit('setData') 从内部动作本身调用变异 .

    第一个参数是您可以根据需要使用状态和变异 . 就个人而言,我只处理过你首先执行操作的项目并进行突变以将其存储在应用程序中 . 例如,如果我想在某个地方的服务器中存储汽车信息,首先我会执行操作(并将其保存到远程数据库) . 一旦我确认它保存在db中,我就会在商店中进行本地变异 . 这完全取决于具体情况 . 但好处是你可以从行动内部变异

相关问题