当前位置: 首页 > 面试题库 >

我是否总是需要从redux中间件返回值?

雍光远
2023-03-14
问题内容

在redux文档中给出的示例中,似乎总是从中间件返回一些东西。但是,当我打电话不next(action)返回时,一切似乎都正常。

在redux源中,它似乎正在调用dispatch每个中间件的返回值。

这使我相信,它为所有中间件运行后提供了一种可选的方式来运行调度。

有人可以确认我们是否必须始终从中间件返回值吗?为什么?


问题答案:

我实际上是前几天在这条推文上发表的。

store.dispatch()默认情况下,该方法返回传递的操作。由于中间件管道环绕dispatch(),因此每个中间件都可以更改在传入过程中通过管道传递的值,并更改返回的返回值。

许多中间件依赖于能够自己返回值或使用返回的返回值。例如,redux- thunk返回从thunk函数返回的任何内容,并且通常使用它来返回thunk的promise,以便您可以进行链结dispatch(somePromiseThunk()).then( () => {})

如果中间件调用next(action)但实际上并未从中返回值next(),则可能会破坏这些功能。具体行为将取决于您设置的中间件以及订购方式。

因此,“正确”的做法是, 默认情况下每个Redux中间件 都应 return next(action)默认使用,除非它明确想要更改返回值的行为。这样可以确保最佳的兼容性和将中间件组合在一起的能力。



 类似资料:
  • 问题内容: 如果我运行查询,例如: 即使查询与任何记录都不匹配,它也会始终返回结果吗?还是我需要验证并确保结果返回一行? 问题答案: 是的,因为它是一个聚合并且返回零。除非您添加GROUP BY,否则由于没有组,因此没有结果… 除非您添加GROUP BY,然后没有任何行,否则MAX / SUM等将返回NULL。只有COUNT传回没有结果的数字 编辑,有点晚:SUM会像MAX一样返回NULL 编辑,

  • 问题内容: 我们有一些Hibernate getter方法,它们都用和标注。 如果没有相应的设置器,则会出现异常。为什么是这样? 在我们的例子中,我们派生了从getter返回的值(将其存储在DB中),而setter没有任何功能目的。因此,我们只有一个空方法可以解决错误情况。 问题答案: 正如其他人提到的那样,如果您注释属性getter方法,则Hibernate在从数据库读取值时会使用setter。

  • 问题内容: 我有一个非常简单的文件: 而且有效。 但是,当我删除元素时,应用程序看不到实体(所有类都带有注释)。 是否有自动扫描类的机制? 问题答案: 你可以使用 该文件定义了一个名为的持久性单元,它使用JTA感知数据源。所述和元素指定管持久类:实体类,可嵌入类和超类映射。该元素指定JAR文件都包含持久化类管理的打包持久单元可见,而该class元素明确命名持久化类管理。 对于,也可以进行设置和配置

  • 问题内容: 我正在使用自动提交功能连接到SQL Server。如果一切成功,我称之为提交。否则,我就退出。我是否需要显式调用回滚,还是在不提交就关闭连接时自动回滚? 如果很重要,我将从SAS的proc sql内部执行SQL命令。 更新: 如果未调用回滚,则SAS可能会在proc sql块的末尾自动调用commit。因此,在这种情况下,回滚将不仅仅是一个好习惯;这将是必要的。 最终更新: 我们最终切

  • 问题内容: 下面的对象有一个嵌套对象 我应该如何在减速器中处理它? 我可以如上所述做吗?我只是将整个对象分配给它而不进行复制? 要么 还是应该对对象进行深层复制并将其分配给?谢谢 问题答案: 处理嵌套数据更新的“正确”方法是使用多个浅表副本,每个浅层副本一个。按照您的第一个示例,完全可以完全替换一个字段的新对象当然也可以。 有关如何正确执行不可变更新的一些信息,请参阅不可变更新模式的Redux文档

  • 问题内容: 如果仅在输出流中调用,则可以保证输出,还是需要始终调用? 问题答案: Close()始终刷新,因此无需调用。 编辑:这个答案是基于常识和我遇到的所有输出流。谁将为缓冲流实现close()而不先刷新缓冲区?在close()之前立即调用flush没有什么害处。但是,如果过度调用flush()会导致后果。它可能会在缓冲机制下失败。