Javascript 将回调传递给redux异步操作是否被认为是一种良好的做法?

Javascript 将回调传递给redux异步操作是否被认为是一种良好的做法?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我想为成功/错误响应显示不同的通知栏, 我将两个回调传递给react组件中的redux异步操作,如下所示: <Button onClick={e => this.props.actions.asyncAction(item, this.showSuccessBar, this.showErrorBar)} /> 这是否与模式背道而驰? 换句话说,通知栏是否应该根据状态更改而不是回调打开?这将是双向数据流,打破了流量的第一条规则。我建议将名为smth的存储区与Notific

我想为成功/错误响应显示不同的通知栏, 我将两个回调传递给react组件中的redux异步操作,如下所示:

<Button
  onClick={e => this.props.actions.asyncAction(item, this.showSuccessBar, this.showErrorBar)}
/>
这是否与模式背道而驰?
换句话说,通知栏是否应该根据状态更改而不是回调打开?

这将是双向数据流,打破了流量的第一条规则。

我建议将名为smth的存储区与
NotificationStore
分开,并围绕它构建通知基础设施。您可以使用回调,但这是将来解决大问题的方法

图案本身很好。如果这是组件的本地通知,请避免通过Redux进行连接

也就是说,回调完全没有必要,因为您已经在返回承诺。只需等待它的完成

this.props.dispatch(asyncAction(item)).then(onSuccess, onFailure);

但是,如果您有许多具有此类通知栏的组件,最好有一个减速器来保持当前通知并对操作作出反应。

非常感谢,这非常有效。也非常感谢您在redux和devtools等方面的出色工作!我们爱他们:)我还有一个相关的问题,不确定我的方向是否正确。@RubenMartinezJr。我不明白这个问题。Thunk中间件将确保Thunk的返回值(承诺)从
dispatch
本身返回。无论何时行动创造者决定,它都会解决,这取决于这个承诺是如何创造的。这有用吗?如果不是的话,也许你可以创建一个单独的问题。为什么每当我尝试使用
时,我都无法读取未定义的
的'then'。然后()
:当
调度
工作并调度动作时,它如何被未定义?React-redux的
调度
道具似乎没有返回承诺!奇怪。@DanAbramov在文档中说“操作是将数据从应用程序发送到商店的有效信息”。我同意。对我来说,动作描述了一个事件或改变或变异的意图,它们通知了架构的许多地方。对我来说,在跳转架构的动作中使用sideffecty回调不是一个好模式,回调并不是描述改变的意图
this.props.dispatch(asyncAction(item)).then(onSuccess, onFailure);