如何解决最后的“ SetItem”不会保存,并在页面刷新时清除
每次单击箭头时,React状态都会保存在本地存储中 但是,刷新页面时,该值减小1,因为上一次更改未保存到本地存储中
如果您修改了多个项目,那么问题将出在最后按下的项目上
The Code is here
=> https://codesandbox.io/s/solitary-currying-jb2gx?file=/src/App.js
解决方法
您要在使用upvote更新状态之前调用序列化函数setLocalStorage()
。 setState函数是异步的,状态更新由React批处理,因此不会立即更改。您应该在setState的第二个参数(回调)内调用setLocalStorage()
。然后,在调用它时,您将具有正确的状态。
赞:
upVote = (id,delta) => {
this.setState(
(e) => ({
text: e.text.map((x) =>
x.id === id ? { ...x,vote: x.vote + delta } : x
),time: this.state.time
}),() => this.setLocalStorage()
);
};
您还可以将函数本身作为setState的第二个参数传递:
...
time: this.state.time
}),this.setLocalStorage
);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。