首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在this.state中使用this.state

如何在this.state中使用this.state
EN

Stack Overflow用户
提问于 2018-05-18 13:02:37
回答 2查看 107关注 0票数 0

我想把this.state.currentPlayer分配给this.state.whosPlaying。它抛出错误TypeError: Cannot read property 'currentPlayer' of undefined at new Board

代码语言:javascript
复制
constructor(props) {
    super(props);
    this.state = {
      symbols: [X, O],
      currentPlayer: Math.floor(Math.random() * 2),
      fields: Array(9).fill(null),
      whosPlaying: this.state.currentPlayer,
    };
  }

有人有这样的模式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-18 13:13:23

如果使用对象字面语法,则不能在初始化期间引用对象。

如果希望根据对象中的现有属性在状态上设置属性,则可以在componentWillMount()生命周期方法中这样做。

守则如下:

内部构造函数()

代码语言:javascript
复制
constructor(props) {
    super(props);
    this.state = {
      symbols: [X, O],
      currentPlayer: Math.floor(Math.random() * 2),
      fields: Array(9).fill(null)
    };
}

Inside ()

代码语言:javascript
复制
this.setState((prevState) => { whosPlaying: prevState.currentPlayer });

注意:如果您使用的是React 16.3+,您可以考虑使用getDerivedStateFromProps()。

票数 2
EN

Stack Overflow用户

发布于 2018-05-18 13:06:49

我真的不认为react的状态应该是这样使用的。如果您想这样做,我只需要在设置状态之前声明currentPlayer。关于一个例子,见下文:

代码语言:javascript
复制
constructor(props) {
    super(props);
    const currentPlayer = Math.floor(Math.random() * 2)
    this.state = {
      symbols: [X, O],
      currentPlayer,
      fields: Array(9).fill(null),
      whosPlaying: currentPlayer,
    };
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50411952

复制
相关文章

相似问题

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