不需要提交突变的vuex动作

Ron*_*han 1 vue.js vuex

使用Vue和Vuex,我遵循了建议的做法,即仅通过突变来更改状态。因此,所有Vue组件都将通过使用操作来更改状态,然后再执行一个突变。我还通过一些操作进行API调用,然后根据结果更新状态。

我现在有一些API调用,不需要在调用后更新状态。问题是我仍然应该使用动作吗?还是应该绕过vuex并直接从组件进行这些调用?

Nay*_*med 8

你可以使用 _ 代替 {commit}

getAllUser(_, payload) {
    let response = await ApiService.getAllUser(
        payload.params
    );
    return response;
}
Run Code Online (Sandbox Code Playgroud)


van*_*jor 7

使用动作的主要原因如下:

  • 突变必须是同步的,动作可以是异步的->如果要在突变之前处理异步操作,则必须使用动作
  • 如果您想一次提交多个突变,可以将它们逻辑上捆绑为一个动作

因此,总而言之,您是对的:如果您清楚地知道这些API调用不会以任何方式改变应用程序的状态,则不应使用action来调用它们

如果要在多个组件之间共享这些调用,请直接在组件内部进行调用,导入包含所需功能的模块,或将各个方法放入mixin中。

但是,如果您应该在开发过程中发现这些调用的结果应该在应用程序的多个组件之间共享,则可以通过操作和变异将相应的逻辑移至存储中。

  • 在我看来,使用 _ 而不是 {} 是向其他程序员指示他们应该“忽略此绑定/参数”的约定,因此 myfunction(_, Payload). /sf/ask/1934590941/ (4认同)