Redux:将参数传递给可以从状态中检索的动作?
Posted
技术标签:
【中文标题】Redux:将参数传递给可以从状态中检索的动作?【英文标题】:Redux: Passing down Arguments to Actions that could be retrieved from State? 【发布时间】:2019-03-14 04:03:29 【问题描述】:我有一系列文章。用户有时会编辑或删除文章。我的应用会跟踪当前正在处理的文章的状态(称之为currentArticleId
)。
现在,当用户编辑或删除一篇文章时,我是否会将currentArticleId
作为参数提供给我的动作创建者(例如:deleteArticle(this.props.currentArticleId)
),或者我会不这样做吗?只需触发动作创建者不带参数(例如:deleteArticle()
),然后从我的动作创建者的状态中检索currentArticleId
?
这里的最佳做法是什么?为什么我会选择一种解决方案而不是另一种?
【问题讨论】:
【参考方案1】:如果你所说的状态是指 Redux 应用程序状态,那么没有正确或错误的答案。您甚至可以有两个操作 - deleteCurrentArticle()
或 deleteArticle(articleId)
并使用更适合您的任何操作。
但是,如果您询问组件状态,我认为动作创建者应该与组件分离。所以我更喜欢将 currentArticleId 作为参数传递。
【讨论】:
我确实是指 Redux-State。谢谢。【参考方案2】:我会通过传入文章 ID 使您的操作创建者更加灵活,然后您的删除文章操作可以删除当前文章或它想要删除的任何其他文章。
编辑:我想补充一点,通常有更好的替代方法可以将此类信息保存在全局状态中。如果您只是编辑/删除页面上的单个文章,那么您可以有一个类似 article/id/edit
的 URL,然后从那里获取 ID 并将其传递给您需要的内容,或者如果您有一个文章列表,每个如果有编辑器,请考虑将文章 ID 作为道具传递给编辑器组件。
【讨论】:
以上是关于Redux:将参数传递给可以从状态中检索的动作?的主要内容,如果未能解决你的问题,请参考以下文章
在 Redux Reducer 中读取 Store 的初始状态
如何将从表单提交中检索到的参数作为参数传递给 django 中的函数
使用 promise/thunk 通过 action 将参数传递给 reducer
将文本字段输入值(如果输入)作为可选参数传递给 react-redux-typescript 应用程序中的 GET api 调用