reactjs - 在 reducer 中更新状态后如何重新渲染 UI?
问题描述
我有一个已保存项目的列表,我希望能够“取消保存”我想要的任何项目。我成功地从保存的列表中删除了该项目,但我必须重新加载页面才能显示更新的列表(删除该项目后)。如何在 UI 中即时更新它?
在 saved.js(减速器)中:
const initialState = {
savedItems: [],
}
...
case UNSAVE_ITEM: {
if (!error) {
const {user_un_favorite} = payload;
if (user_un_favorite && user_un_favorite.ok) {
const savedItems = state.savedItems || [];
return {
...state,
savedItems: savedItems.filter(i => i.id != payload.id)
}
}
}
}
在 Saved.js 屏幕中
...
renderSavedCards = () => {
const { savedItems } = this.props;
return (
<div className="list-right">
{savedItems.map((item, index) => {
return (
<div>
<div className="savedCard">
<SearchCard
data={item.data}
/>
<span
className="deleteSaved"
onClick={(e) => {
e.stopPropagation();
this.props.unSaveItem(item.id);
}}
>
<IcTrash className='trash-icon'/>
</span>
</div>
</div>
);
})}
{this.renderLoadMore()}
</div>
);
};
解决方案
推荐阅读
- c# - C# WPF TextBox 对文本更改的调用方法
- python - 使用pandas groupby并申请累积积分
- r - Tidyquant 中权重随时间和资产变化的投资组合
- google-cloud-platform - 谷歌云平台密钥过期问题
- r - 在 Shiny R 中显示维恩图
- javascript - 为 javascript 动画添加定时停止
- docker - Terraform:Docker 提供者忽略了图像摘要的更新
- api - API 使用枚举时出现 Swagger 验证错误
- python - 如何在pytest中获取cmd line参数并将其直接设置为全局
- c# - UserManager.GetRolesAsync() 方法