带有 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 应用程序中的页面转换时拒绝先前路由的待处理操作
在 Redux Reducer 中执行 Ajax Fetch?
我可以在没有 action creators 和 reducers 的情况下在 React 和 Redux 中发送 AJAX 调用吗?