带有 prelogic 的 Redux ajax 工作流

Posted

技术标签:

【中文标题】带有 prelogic 的 Redux ajax 工作流【英文标题】:Redux ajax workflow with prelogic 【发布时间】:2016-04-22 06:16:02 【问题描述】:

我正在编写一个安静的 redux/react 应用程序。 我想要的输出是这样的。

INPUT_CHANGE-->
(state = valid: false)->REDUCER->(state = valid: true)-->
AJAX CALL

从 redux 文档来看,异步 javacript 应该是从动作创建者调用的,但是我不明白一旦状态从 valid:false 变为 valid:true 后如何访问动作创建者。

由于这是一个 react 应用程序,我可以更改一个名为 valid 的隐藏输入,它附加了一个 onChange 操作创建器,但这似乎是一个不必要的额外步骤。有任何想法吗?

【问题讨论】:

某些东西必须在监听有效的状态变化。无论在哪里,您都可以使用componentWillUpdate 来触发执行异步操作的动作创建者。 使用redux,组件在技术上会更新吗?我认为重点是用新的道具重新渲染? 完全正确...每当组件即将使用新道具重新渲染时 componentWillUpdate 就会触发。一般的观点是观察状态变化的东西(如连接的组件)需要触发一个动作(如 ajax 调用) 好吧,这对我来说很有意义!干杯 但要小心无限循环!请记住,您应该只在某些条件下发送更多的状态更改。每当状态改变时就派发是很诱人的,但是状态改变状态改变状态,所以请记住这一点 【参考方案1】:

我的一般偏好是让动作创建者处理所有异步操作。所以本题的验证操作和http://rackt.org/redux/docs/advanced/AsyncActions.html中的shouldFetchPosts函数差不多

动作创建者将类似于inputChangeAndSubmitIfValid,对应于该文件的fetchIfNeeded动作创建者。

在极少数情况下,我会实施 observer 来捕捉商店变化,但我总是首先尝试找到更好的面向操作的方式。

【讨论】:

以上是关于带有 prelogic 的 Redux ajax 工作流的主要内容,如果未能解决你的问题,请参考以下文章

如何使用“redux-thunk”调用 ajax?

在 Redux 应用程序中的页面转换时拒绝先前路由的待处理操作

在 Redux Reducer 中执行 Ajax Fetch?

我可以在没有 action creators 和 reducers 的情况下在 React 和 Redux 中发送 AJAX 调用吗?

react + redux + saga +服务器端渲染+如何停止服务器端渲染页面的额外ajax调用?

带有 redux-form 的 Redux 开发工具