gpt4 book ai didi

reactjs - 如何在 saga 异步请求后设置状态

转载 作者:行者123 更新时间:2023-12-03 13:29:43 25 4
gpt4 key购买 nike

我在我的项目中使用 redux-saga。我之前使用过 redux-thunk,所以我无法 setState 结束某些异步请求。喜欢

this.props.thunkAsync()
.then(){
this.setState({ '' });
}

由于 thunk 返回 promise ,我可以使用“then”。但我不能用 saga 这样做,因为 saga 不会返回 promise 。所以我在 componentWillReceiveProps 中通过检查标志 Prop (如 REQUEST_SUCCESS、REQUEST_WAITING...)已更改来完成此操作。我认为这不是解决这个问题的好方法。

所以..我的问题是当异步请求以 redux-saga 结束时我该如何做一些工作!

最佳答案

But i can't do this with saga, because saga doesn't return promise

Redux-sagathunk 略有不同,因为它是进程管理器,而不是简单的中间件:thunk 仅对触发的操作执行 react ,但是saga有自己的“流程”(正式的回调tick域)并且可以通过效果来操作 Action 。

使用 redux-saga 执行异步操作的常用方法是将原始操作拆分为 ACTION_REQUESTACTION_SUCCESSACTION_FAILURE > 变体。然后reducer只接受SUCCESS/FAILURE操作,并且可能接受optimistic updates的REQUEST 。

在这种情况下,您的 saga 流程可能如下所示

function* actionNameSaga(action) {
try {
const info = yield call(fetch, { params: action.params }
yield put('ACTION_NAME_SUCCESS', info)
} catch(err) {
yield put('ACTION_NAME_FAILURE', err)
}

function* rootSaga() {
yield takeEvery('ACTION_NAME', actionNameSaga)
}

请记住,yield 操作本身与 promise 等待无关 - 它只是将异步等待委托(delegate)给 saga 流程管理器。

关于reactjs - 如何在 saga 异步请求后设置状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47427001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com