首页 > 解决方案 > 使用 setState 设置反应页面的所有状态

问题描述

我有一个页面,我将获取页面的整个状态并使用一些本地存储设置它,所以我需要使用 SetState 但不使用像理智的人那样的属性

理智的人

this.setState({ 
  stateProperty:someValue
})

我(我想要达到的)

this.setState({
  this.state: {someValues}
})

标签: javascriptreactjsjsx

解决方案


不,你没有。对不起,你不能。你已经接受了人们喜欢的理智的自己,但你为什么要尝试疯狂的代码?

最好维护具有指定状态的 localStorage 数据:

state = {
  storeData: {} // or, [], or whatever your stored data type
}
componentDidMount() {
  const storeData = JSON.parse(localStorage.getItem('store-data'))
  this.setState({
     storeData
  })
}

有些人可能会建议您直接在构造函数中初始化 localStorage 数据。但我反对它,因为我不喜欢对组件造成一些副作用。

localStoragePS:实际上在构造函数中使用数据没有副作用。我刚刚建议使用componentDidMount钩子,因为您可能需要调用一些 api 来调用加载localStorage数据,而那时您可能会产生一些副作用。要忽略这一点,请使用componentDidMounthook,因为它是一个在后台运行的异步函数。


推荐阅读