【发布时间】:2019-09-12 19:15:33
【问题描述】:
我有工作React-Native + Redux注册流程:
- 填充输入
- 在组件中验证它们 (Formik)
- 调用操作存储
registerUser(formData) - 等待
saga对API进行异步调用 - 在
API错误调用reducerREGISTER_ERROR上,将存储变量formError设置为某些消息。
我的组件具有映射到 props 的状态(此错误消息与 props 挂钩)。
我正在做componentDidUpdate(),当来自商店的错误道具被更改时,我触发ToastAndroid.show(errorMessage)。
但是我的Toast被调用了多次,因为componentDidUpdate也被调用了多次(Redux更新组件多次)。
我知道快速解决方法,例如创建本地状态 visible,当此状态变量为 true 时,不会显示其他 Toast。
有没有更好更常见的方法来做到这一点?在我看来,依靠 Toast 的 onClose 事件将状态变量设置为 false 是很奇怪的。
【问题讨论】:
-
相反,为什么不能在 API 调用本身之后触发 toast 而不是在该组件中执行它?
-
@Shivaraj 那不是反模式吗? (如果你的意思是在 saga 中调用它)
-
如果我们能看到你的代码就太好了
标签: javascript reactjs redux