react-redux hook 中的顺序调度操作
Sequential dispatch action in react-redux hook
我正在使用 useDispatch() 函数 return 我是一个调度对象来触发一些动作。
我有一个特定的场景,我想触发一个取消用户请求的拒绝操作,在从服务器返回响应后(无论成功与否)我将决定是否应该触发另一个动作。
我的方法是这样的:
const reject = () => {
dispatch(method1(data));
dispatch(fetchAll());
}
When.i 观察开发人员控制台上的日志,method1()
和 fetchAll()
都在未等待响应的情况下触发。
如何确保 method1() return 在处理 fetchAll() 之前有一些值?
您需要使用redux-thunk middleware. Take look at Composition
Redux Thunk middleware allows you to write action creators that return a function instead of an action. The thunk can be used to delay the dispatch of an action, or to dispatch only if a certain condition is met.
然后你可以像这样发送动作:
const reject = () => {
dispatch(method1(data)).then(res => {
if(res.success) {
dispatch(fetchAll());
}
})
}
我正在使用 useDispatch() 函数 return 我是一个调度对象来触发一些动作。
我有一个特定的场景,我想触发一个取消用户请求的拒绝操作,在从服务器返回响应后(无论成功与否)我将决定是否应该触发另一个动作。
我的方法是这样的:
const reject = () => {
dispatch(method1(data));
dispatch(fetchAll());
}
When.i 观察开发人员控制台上的日志,method1()
和 fetchAll()
都在未等待响应的情况下触发。
如何确保 method1() return 在处理 fetchAll() 之前有一些值?
您需要使用redux-thunk middleware. Take look at Composition
Redux Thunk middleware allows you to write action creators that return a function instead of an action. The thunk can be used to delay the dispatch of an action, or to dispatch only if a certain condition is met.
然后你可以像这样发送动作:
const reject = () => {
dispatch(method1(data)).then(res => {
if(res.success) {
dispatch(fetchAll());
}
})
}