【问题标题】:Change multiple key values and setState in React在 React 中更改多个键值和 setState
【发布时间】:2020-11-02 20:57:57
【问题描述】:

如何更改所有键“isVisible”的值?

state = {
    players: [
      {
        id: 0,
        name: 'Gabriel',
        isVisible: false,
      },
      {
        id: 1,
        name: 'John',
        isVisible: false,
      },
    ]

我试过了:

handleclick = () => {
    let players = this.state.players
    players = players.map(player => player.set("isVisible", true))
    this.setState({
      players
    })
  }

它抛出错误,因为president.set 不是一个函数。有什么想法吗?

【问题讨论】:

  • 您使用的是 immutable.js 还是其他库?你从哪里得到set

标签: reactjs


【解决方案1】:

试试这个:

  handleclick = () => {
        let players = this.state.players
        players = players.map(player => {player.isVisible = true; return player;}))
        this.setState({
          players
        })
      }

【讨论】:

  • 这个解决方案会改变状态。您可以简化并避免像这样的突变:players.map(player => ({...player, isVisible: true}))
  • @BrianThompson 即使他声明了一个新的让玩家,它真的会改变状态吗?
  • @charly1212 是的。 JavaScript 对象和数组存储为引用,因此赋值let players = this.state.players 实际上是为状态数组分配一个引用,而不仅仅是它的值。您可以对其进行测试以查看两个数组中是否发生了突变,或者查看我写的this answer(带有可运行示例,请参阅“说明”标题)。
猜你喜欢
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多