我对清除redux状态有疑问。
我有一个名为search
的状态用于搜索带有提取的地址。它的结构如下
search:{
status: 'INIT',
results: [],
}
status
是异步请求的标志,例如' SUCCESS'或者'失败'。
results
是抓取的结果。
当用户搜索地址带有一些搜索词时,结果会有提取结果。 我的组件像这样呈现,
<div>
{this.props.results.map((result,i)=>{
<div>{result}</div>
)}
</div>
所以我的问题是当用户尝试在其他一些工作之后再次搜索时,组件呈现之前的搜索结果,因为results
不明确。
目前,我发送行动&#39; CLEAR_SEARCH&#39;在使用结果工作完成后初始化search
状态。但我认为这不是一个好方法。
有没有更好的主意?
答案 0 :(得分:2)
当您开始初始化新请求时,您可以发送一个动作调用START_LOADING
JsonConverter
然后像这样处理:
dispatch(startLoadingAction())
try {
const result = await fetch...
dispatch(successAction(result));
} catch {
dispatch(failureAction());
}
答案 1 :(得分:0)
在redux中请求的常见模式看起来更像
{
isLoading: false,
data: [],
error: false,
isLoaded: true,
hasFailed: false,
}
这样当您清除或重新发布搜索结果时,请求的状态会发生变化,您可以根据请求而不仅仅是数据的存在来显示。