首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将嵌套对象/数组变异为React中的状态

将嵌套对象/数组变异为React中的状态
EN

Stack Overflow用户
提问于 2018-10-15 04:05:45
回答 2查看 1.9K关注 0票数 -2

我使用的React组件看起来像这样(下面是我使用的组件的简化版本)。

我的问题是:如何在使用this.setState的情况下实现同样的效果?下面的代码可以工作,但我直接改变了状态,并收到以下警告:

不会直接改变状态。使用setState()

代码语言:javascript
复制
class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      playerState: [
        {
          name: 'Jack',
          hp: 30
        },{
          name: 'Alan',
          hp: 28
        }
      ],
    };
  }
  lowerPlayerHealth = (index) => () => {
    this.state.playerState[index].hp = this.state.playerState[index].hp - 1
    this.forceUpdate();
  }
  render() {
    return (
      <div className="App">
        <p>Player 1: {this.state.playerState[0].name}</p>
        <p>Health: {this.state.playerState[0].hp}</p>
        <button onClick={this.lowerPlayerHealth(0)}>Hit player 1</button>
        <p>Player 2: {this.state.playerState[1].name}</p>
        <p>Health: {this.state.playerState[1].hp}</p>
        <button onClick={this.lowerPlayerHealth(1)}>Hit player 2</button>
      </div>
    );
  }
}

渲染时,它看起来如下所示:

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52806627

复制
相关文章

相似问题

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