0

我在 React 中有一个简单的列表渲染示例:

  render() {
    return (
      <ul>
        {this.state.cards.map(({ data }, index) => (
          <li key={index} onClick={() => this.remove(index)}>
            {data}
          </li>
        ))}
      </ul>
    );
  }

  remove = index => {
    let cards = this.state.cards.filter((card, i) => i != index);
    this.setState({ cards });
  };

在这里,我使用索引作为键,即使在谷歌中搜索 React 中的键并阅读手册后,我仍然不明白:

remove函数会更改索引,从而更改列表中某些元素的键(因此,如果我删除了 2 号元素的所有键,则它会更改)。

所以我实际上希望这个函数总是删除列表中的最后一项,因为每次只删除这个键,但令人惊讶的是它是否按“应该”的方式工作并且每次都删除正确的元素 - 当我查看 Chrome 中的 React 控制台,我看到它更改了键,但没有删除并再次创建那些键已更改的元素...

我对这里发生的事情感到非常困惑((⇀‸↼))

4

0 回答 0