javascript - 使用 setState 设置反应页面的所有状态
问题描述
我有一个页面,我将获取页面的整个状态并使用一些本地存储设置它,所以我需要使用 SetState 但不使用像理智的人那样的属性
理智的人
this.setState({
stateProperty:someValue
})
我(我想要达到的)
this.setState({
this.state: {someValues}
})
解决方案
不,你没有。对不起,你不能。你已经接受了人们喜欢的理智的自己,但你为什么要尝试疯狂的代码?
最好维护具有指定状态的 localStorage 数据:
state = {
storeData: {} // or, [], or whatever your stored data type
}
componentDidMount() {
const storeData = JSON.parse(localStorage.getItem('store-data'))
this.setState({
storeData
})
}
有些人可能会建议您直接在构造函数中初始化 localStorage 数据。但我反对它,因为我不喜欢对组件造成一些副作用。
localStorage
PS:实际上在构造函数中使用数据没有副作用。我刚刚建议使用componentDidMount
钩子,因为您可能需要调用一些 api 来调用加载localStorage
数据,而那时您可能会产生一些副作用。要忽略这一点,请使用componentDidMount
hook,因为它是一个在后台运行的异步函数。
推荐阅读
- java - 如何有效地添加多个事件处理程序
- angular-material2 - 在 NgbModal 中使用 cdk-virtual-scroll-viewport 进行水平滚动
- python - emcee EnsembleSampler 对象没有属性 get_chain
- r - ggplot 只打印最后一张图
- unity3d - 无法检测与儿童和地面的碰撞
- javascript - 为什么 JavaScript fetch 函数返回错误的值?
- php - Laravel Validation Array 必须包含一个 boolean 为 true 的项目
- azure-pipelines - Azure 管道模板 - 选择要运行的阶段
- javascript - svelte + rollup 中的环境变量
- php - ACF 未在 wp 主题的页脚中显示值