javascript - 状态似乎没有正确更新
问题描述
我正在尝试列出我看过的星球大战电影。我希望能够检查和取消选中我单击的内容并将其保存在 localStorage 中。出于某种原因,有时,如果我一次浏览不止一部电影,在我刷新页面后,只有我浏览的最后一部仍然被浏览。我试图用我的控制台进行调试,我发现问题出在我的状态上。有时,在我单击多个元素后,其中一些会保持为假,而不是变为真。
这是我的代码:
import React from 'react';
export default class Movie extends React.Component{
constructor(props){
super()
this.state = (localStorage.appState) ? JSON.parse(localStorage.appState)
: { 0: false, 1: false, 2: false, 3: false, 4: false, 5: false};
}
clickedTitle = (event) => {
if (event.target.tagName === "SPAN") {
this.setState({
[event.target.id]: !this.state[event.target.id]
}, () => {
localStorage.setItem('appState',JSON.stringify(this.state))
});
// localStorage.clear()
}
}
render(){
return(
<div className="sw_title" onClick={this.clickedTitle}>
<span id={this.props.index} className={`${this.state[this.props.index] ? "clicked" : "not-clicked"}`}> {this.props.title} </span>
</div>
);
}
}
提前感谢您的宝贵时间!四月
解决方案
推荐阅读
- api - https安全下的REST API
- c# - 日期时间应符合用户在 Xamarin 表单中在设备上设置的首选项
- python - 将整个数组与来自另一个数组的条目独立地相乘
- javascript - 在游戏中静音和取消静音的问题
- spring-boot - 如何使用文件URI从运行springboot的docker镜像访问本地文件?
- python-3.x - Python - 打开文件并在屏幕上显示
- c# - 如何以不同的速度编写一堆第一人称动画
- material-ui - KeyboardDatePicker 的 Material UI 填充输入
- r - (R) 编辑数据表中多列数据后面单元格的渐变颜色
- angular - ngFor 中调用的方法多次触发