Reactjs React简介教程:如何列出';s的钥匙有价值吗?

Reactjs React简介教程:如何列出';s的钥匙有价值吗?,reactjs,Reactjs,我没有使用js的经验,建议在使用React Native之前先学习React。我的问题来自于源代码 在本教程中,我们制作了一个名为history的列表,其键为move class Game extends React.Component { constructor() { super(); this.state = { history: [{ squares: Array(9).fill(null) }], xIsNext

我没有使用js的经验,建议在使用React Native之前先学习React。我的问题来自于源代码

在本教程中,我们制作了一个名为
history
的列表,其
键为
move

class Game extends React.Component {
  constructor() {
    super();
     this.state = {
      history: [{
        squares: Array(9).fill(null)
      }],
      xIsNext: true,
      stepNumber: 0,
    };
  }

  [...]

  render() {
    [...]

    const moves = history.map((step, move) => {
      const desc = move ?
        'Move #' + move :
        'Game start';
      return (
        <li key={move}>
          <a href="#" onClick={() => this.jumpTo(move)}>{desc}</a>
        </li>
      );
    });

[...]
类游戏扩展React.Component{
构造函数(){
超级();
此.state={
历史:[{
正方形:数组(9)。填充(空)
}],
下一个:是的,
步骤编号:0,
};
}
[...]
render(){
[...]
常量移动=历史。映射((步骤,移动)=>{
const desc=移动?
“移动”#+移动:
“比赛开始”;
返回(
  • ); }); [...]
    对这一部分的解释是错误的

    […]React要求您在列表中的每个元素上指定一个键属性,一个字符串以区分每个组件及其同级。在这种情况下,alexa、ben、claudia可能是合理的键;如果项目对应于数据库中的对象,则数据库ID通常是一个不错的选择:

  • {user.name}:{user.taskCount}剩余任务
  • 强烈建议您在构建动态列表时分配适当的密钥。如果您没有合适的密钥,您可能需要考虑重构数据,这样就可以了。[…]如果您不指定任何键,则反应将警告您,并返回使用数组索引作为键。
    现在我感到困惑的是,上面的
    history
    上的
    move
    是什么?我看不到任何暗示
    move
    被赋值的东西,但是当它被打印时,它会显示列表索引?为什么会这样?

    列表是通过使用映射方法来“映射”历史数组来创建的。映射将为列表中的每个元素调用一个函数数组;此回调函数的第二个参数是数组中元素的索引

    在代码中,回调函数如下所示:

    (step, move) => {
      const desc = move ?
        'Move #' + move :
        'Game start';
      return (
        <li key={move}>
          <a href="#" onClick={() => this.jumpTo(move)}>{desc}</a>
        </li>
      );
    }
    
    (步骤,移动)=>{
    const desc=移动?
    “移动”#+移动:
    “比赛开始”;
    返回(
    
  • ); }
    因此,数组的索引,即第二个参数,被称为move(您可以将其称为任何名称);然后将其值呈现为每个列表项的键属性


    我在学习一个严重依赖于JS的框架之前,会强烈地考虑学习JS。所以……是<当前值?但是没有使用?NVM我终于明白了。非常感谢你的解释,并链接了一个很大的帮助!
    (step, move) => {
      const desc = move ?
        'Move #' + move :
        'Game start';
      return (
        <li key={move}>
          <a href="#" onClick={() => this.jumpTo(move)}>{desc}</a>
        </li>
      );
    }