首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在this.setState中使用this.state (this.setState/no-access-state-in-setstate)

防止在this.setState中使用this.state (this.setState/no-access-state-in-setstate)
EN

Stack Overflow用户
提问于 2019-11-23 16:32:32
回答 1查看 155关注 0票数 0

对于这段代码,我得到了一个ESlint (airbnb !this.state.dark )错误:

代码语言:javascript
复制
Use callback in setState when referencing the previous state.

我尝试使用下面的ESlint documentation重构代码。但我很难弄清楚。对于如何解决这个问题,有什么建议吗?

代码语言:javascript
复制
toggleDark = () => {
  const dark = !this.state.dark
  localStorage.setItem('dark', JSON.stringify(dark))
  this.setState({ dark })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-23 17:22:26

感谢@jonrsharpe为我提供了适当的文档。

事实证明,状态更新可能是异步的。React可以将多个setState()调用批处理到单个更新中,以提高性能。在我的代码中,我只有一个正在更新的值。但是,使用接受函数而不是对象的第二种形式的setState仍然是一个好主意。

代码语言:javascript
复制
toggleDark = () => {
  const dark = !this.state.dark
  localStorage.setItem('dark', JSON.stringify(dark))

  this.setState(({ dark }) => ({ dark: !dark }))
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59005886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档