javascript - 如何在本地存储中存储状态以进行 react ?

标签 javascript html reactjs react-redux

我正在尝试将复选框选中的值存储到我的 react 应用程序中的本地存储中。但每次我存储时,它都会存储以前的状态。下面是我的代码:

对于渲染端:

  render () {   
    return (
                      <Checkbox
                        checked={this.state.checkedCheckpoint}
                        onChange={() => this.onChange('checkpoint')}
                      >
                      </Checkbox>
          )

对于 onchange 方法:

  onChange (value){
    const { checkedCheckpoint } = this.state

    if (value === 'checkpoint')
    {
      if (checkedCheckpoint)
      {
        this.setState({checkedCheckpoint : false})
        console.log(checkedCheckpoint)
      }
      else
      {
        this.setState({checkedCheckpoint : true})
        console.log(checkedCheckpoint)
      }
    }
    localStorage.setObject('checkedCheckpoint', checkedCheckpoint)

我所说的先前状态是指: 如果我将检查点初始化为 true,那么在取消检查后,我应该得到 checkpoint: false 对吗?但我得到了 checkedCheckpoint: true。如果我检查了它,我应该得到 checkedCheckpoint: true 对吗?我将得到 checkedCheckpoint: false。似乎它总是遵循本地存储中的先前状态。有谁知道出了什么问题吗?

最佳答案

您需要将要执行状态更改后的任何逻辑作为第二个参数传递给 this.setState()

示例:

state = {
    name: 'Johnny'
}

someMethod = () => {
     this.setState({name: 'Tim'})
     doSomethingElse(this.state.name) //doSomethingElse receives Johnny
}

我想你正在寻找的是

state = {
    name: 'Johnny'
}

someMethod = () => {
    this.setState({name: 'Tim'}, doSomethingElse(this.state.name))
    //doSomethingElse receives Tim
}

请参阅 setState 的文档 here .

关于javascript - 如何在本地存储中存储状态以进行 react ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47625994/

相关文章:

html - CSS:在没有内容和/或固定尺寸的情况下显示背景图像?

javascript - HTML/JS/Coldfusion - 可以在 location.href 上进行多选吗?

javascript - JSDoc:在另一个@param 中引用方法的@param

javascript - 在使用 Redux 进行 React 时,如何在从我的商店/状态中删除项目后更新我的 View

javascript - 选项没有显示在我的选择标签中 | Angular 和 ionic

javascript - Google 翻译 API 未翻译 HTML 标记内的某些单词

reactjs - 类型 'Element | undefined' 不可分配给类型 'FC<any> | undefined'

javascript - 尽管使用 await 关键字,方法返回的 promise 没有完全执行?

html - CSS/样式中的下拉菜单

javascript - 如何正确地将 State 传递给 React 中的不同函数?