【发布时间】:2016-05-21 09:28:22
【问题描述】:
我正在尝试以惯用的 React/Redux 方式将键盘快捷键支持构建到我的 React/Redux 应用程序中。我计划这样做的方式是拥有以下动作创建者和相关动作:
registerShortcut(keyCode, actionCreatorFuncReference)
然后,reducer 将使用 keyCodes 到 actionCreatorFuncReferences 的映射更新 redux 存储中的 registeredShortcuts 对象。然后我的根组件将侦听keyup 并查看是否有关联的keyCode 注册,如果有,则通过动作创建器函数引用调度映射的动作。
不过,这将是我第一次在我的 Redux 存储中存储函数引用。迄今为止,我只有带有原始值(字符串、整数等)的键的对象。
Redux 文档说:
您应该尽最大努力保持状态可序列化。不要在里面放任何你不能轻易转换成 JSON 的东西。
这是否表明在我的 Redux 存储中存储此类函数引用是一个坏主意?如果是这样,有什么更好的方法来完成我在 React/Redux 中尝试做的事情?
另一种方法是将 keyCodes 的映射和函数引用存储在根 react 组件本身中,但这感觉不太像 Redux,因为现在应用程序状态不在 Redux 存储中。
【问题讨论】:
-
我自己也一直在想这种事情。虽然 Redux 状态肯定需要可序列化,但有时您可能还想保留其他一些东西(承诺等)。我刚刚在github.com/rackt/redux/issues/1385 中提出了这个问题 - 我们会看看是否有任何问题。
标签: redux