我在我的项目中使用 redux-saga。我之前使用过 redux-thunk,所以我不能 setState 结束一些异步请求。喜欢
this.props.thunkAsync()
.then(){
this.setState({ '' });
}
Run Code Online (Sandbox Code Playgroud)
由于 thunk 返回 promise,我可以使用“then”。但我不能用 saga 做到这一点,因为 saga 不返回承诺。因此,我通过检查标志道具(如 REQUEST_SUCCESS、REQUEST_WAITING...)在 componentWillReceiveProps 中进行了更改。我认为这不是解决这个问题的好方法。
所以..我的问题是当异步请求以 redux-saga 结束时我该如何做一些工作!
我在我的反应项目中使用 redux。我的问题是当一些使用状态的作品完成时如何清除状态。
例如,search我的 redux 商店中有状态。
search:{
status: 'INIT',
result: [],
}
Run Code Online (Sandbox Code Playgroud)
由于我的搜索是异步请求,因此它具有status字段。
当用户搜索一个词时,它会调度'FETCH_SEARCH'使状态为'LOADING'。
获取完成后,它将调度“SUCCESS_SEARCH”或“FAILURE_SEARCH”以使状态为“SUCCESS”或“FAILURE”。
在我的显示搜索结果的组件中,它的呈现取决于search状态的状态。如果状态为“成功”,它将呈现搜索结果。
到目前为止,没有问题。
但是如果用户之前搜索过并且在一些作品之后尝试再次搜索怎么办?由于用户之前已经成功搜索过,因此search状态为“SUCCESS”状态。所以我的组件将呈现“不需要的”结果。
所以目前,我调度 'CLEAR_SEARCH' 动作来初始化search状态。
我的问题是如何在提交完成后清除 redux 状态。我做得对吗?还是反模式?