减速机是否可以听取其他动作?

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

目前我正在创建动作,然后是减速器来处理我的应用程序的不同部分......不同的域。

我的应用程序列出了课程和学生。

目前我有一个应用程序已加载的操作,以便我知道何时删除加载微调器,我有类和学生的操作。我的问题是我发现我需要连续执行几个动作,并且不确定这是否是使用redux的有效方法。

下面是一个示例函数,它在加载数据后调度多个动作:

/**
  * Callback used by readAppData.
  *
  * @param object ioResult An object: {success: boolean, errorObj?: object, data?: string}
  */
  dataLoaded(ioResult: Object) {
    if (ioResult.success === true) {
      this.props.dispatch(appActions.appHasLoaded());
      if (ioResult.data !== '') {
        const jsonData = JSON.parse(ioResult.data);
        this.props.dispatch(classActions.replaceClasses(jsonData.classes));
        this.props.dispatch(pupilActions.replacePupils(jsonData.pupils));
      }

    } else if (ioResult.errorObj.code === 'ENOENT') { // File doesn't exist.
      writeAppData('', this.dataSaved);
    } else { // Some other error.
      this.props.dispatch(appActions.appHasErrored());
    }
  }

我正在考虑将jsonData.classes和jsonData.pupils放入appActions.appHasLoaded()调用中,并在我的类和学生缩减器中为APP_HAS_LOADED创建一个新案例。

这是一种更好的方法吗?要将其减少到一个动作?通过单独的操作可以轻松查看正在发生的事情...也许在6个月的时间内,我将不得不查看我的代码,以确定在APP_HAS_LOADED上发生了什么,如果我在其他reducer中使用它。此外,在app start上加载的数据将扩展到类和学生之外,所以如果我不组合调用,很快就会有更多的调度 - 也许我可以将数据存储在单独的文件中并加载每个一次一个也可以解决我必须连续调用多个动作的问题。

可以多次调用调度吗?

reactjs react-redux
1个回答
2
投票

是的你可以。

来自Redux创作者Dan Abramov:

许多减速器可以处理一个动作。一个减速器可以处理许多动作。

Redux Docs中引用

此外,有一个关于这个的on github谈话。

© www.soinside.com 2019 - 2024. All rights reserved.