javascript - React JS:状态改变时返回()中的HTML不会重新加载?
问题描述
我有一个项目表,并希望允许用户切换一个“收藏夹”复选框,该复选框将添加/删除收藏夹表。由于切换复选框将从名为“收藏夹”的状态数组(从收藏夹表组件中读取)中添加/删除项目,因此我使用状态收藏夹数组来设置每个复选框的选中属性以维护当状态收藏夹数组更新并重新加载页面时进行持久检查:
<td><input type="checkbox" id={establishment.FHRSID} onChange={handleFavouriteClick} checked={favourites.some(favourite => favourite.BusinessName == establishment.BusinessName) ? true : false}></input></td>
从状态收藏夹数组中添加/删除项目的函数:
function handleFavouriteClick(){
if(document.getElementById(establishment.FHRSID).checked == true){
console.log('favourites: ', [...favourites, establishment])
setFavourites([...favourites, establishment]);
}else{
var temp_favourites = favourites;
var index = temp_favourites.findIndex(x => x.BusinessName === establishment.BusinessName);
if (index > -1) {
temp_favourites.splice(index, 1);
console.log('favourites: ', temp_favourites)
}
setFavourites(temp_favourites);
}
}
但是这样做不允许我取消选中该复选框。正如我可以通过控制台日志确认的那样,该项目已从收藏夹数组中删除,但是当从收藏夹中删除该项目时,HTML 复选框永远不会重新加载,但在添加项目时它会重新加载。
有人可以建议我可能做错了什么吗?
谢谢
解决方案
推荐阅读
- javascript - 想用Javascript实现响应式图片
- c - 为什么下面的程序输出是 5,而不是 4?谁能解释一下?
- java - 编辑 iText PDF Java
- drop-down-menu - 在小部件中找不到方法“SetState”
- c++ - Android 工作室和对象库
- sql - Oracle SQL - ListAgg - ORA-00923:在预期的地方找不到 FROM 关键字
- c# - SynchronizedCollection InvalidOperationException/System.ArgumentException
- javascript - 如何在不同的下拉选择中加载不同的内容?
- java - Oracle 函数中的默认值
- c - 对于 n 个 16 位值,如何在 8-10 个字节的数据中填充任意数量的值?