gpt4 book ai didi

javascript - 将函数存储在 Redux 存储中的替代方法是什么

转载 作者:行者123 更新时间:2023-12-01 01:24:56 25 4
gpt4 key购买 nike

问题

我有这样的结构:

<MenuBar />
<NavigationBar>
<irrelevant stuff here />
<ActionButton />
</NavigationBar>
<Router>
<Route ...>
</Router>

我希望导航栏中的 ActionButton 根据路由器(标准 ReactRouter 路由器)渲染的路由执行不同的操作

第一个想法

我的第一个想法是在商店中保存一个函数,并使用 mapStateToPropsconnect 将该函数作为 prop 发送到 ActionButton。每当回调发生变化时,我都会调度一个以该函数作为有效负载的操作。

我很确定这应该有效,但我知道在商店中存储不可序列化的内容可能会产生负面后果。特别是,它会带来存储内容的持久化和补充问题,以及干扰时间旅行调试。 This link from the docs讨论了它并引用了一些讨论该问题的 GitHub 问题。 This StackOverflow question也讨论这个问题。

问题

我见过很多地方人们说“你不应该这样做”,但我还没有看到在商店中存储函数的替代方法。我能想到的替代方案是使用 Prop 钻孔,但我真的很想避免这种模式。

此时,我真的不需要保留或补充存储,时间旅行调试是一个非常好的功能,但不是必须的。但是,如果有好的替代方案,我希望避免牺牲这些东西。

提前致谢! :)

最佳答案

几个选项:

  • 使用中间件监听“ACTION_BUTTON_CLICKED”操作,并根据其他值(存储状态、路由等)运行不同的逻辑。这可以是您自己编写的自定义中间件,也可以是通用副作用中间件,例如 redux-saga 或 redux-observable,让您可以响应分派(dispatch)的操作。
  • 根据其他行为将预定义操作放入存储中,并在单击按钮时调度该操作。

我在我的帖子 Practical Redux, Part 10: Managing Modals and Context Menus 中展示了预定义操作方法的示例.

关于javascript - 将函数存储在 Redux 存储中的替代方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53888703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com