ReactJS - 在地图中映射

Rém*_*ian 3 javascript ecmascript-6 reactjs

我正在研究ReactJS和Redux应用程序.在某些时候,我有一个元素列表(注释),每个元素都有一个数组(子任务).我想显示所有元素,并为每个元素显示其数组的内容.

我试过这个:

 render(){
    return(
        <div>
            <h3>{this.props.match.params.user}'s board</h3>

            <Link to={`/settings/${this.props.match.params.user}`}>
                <button>Settings</button>
            </Link>

            <Link to={`/new/${this.props.match.params.user}`}>
                <button>Add note</button>
            </Link>

            {
                this.props.notes.map((item,index) => 
                    <Link to={`/details/${item.name}`}>
                        <h4 key={index}>{item.name}</h4>

                        item.subtasks.map((sub, subindex)=>
                            <p key={subindex}>{sub}</p>)

                    </Link>
                )
            }
        </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

但我得到了:

未捕获的ReferenceError:未定义子索引

什么是正确的方法呢?

Pra*_*rma 9

你需要像这样包围第二个map内部{}括号

{
    this.props.notes.map((item,index) => 
        <Link to={`/details/${item.name}`}>
            <h4 key={index}>{item.name}</h4>

            { 
                item.subtasks.map((sub, subindex) =>
                    <p key={subindex}>{sub}</p>)
            }

        </Link>
    )
}
Run Code Online (Sandbox Code Playgroud)


GMK*_*ain 5

一个使用Vanilla JavaScript 的示例,您可以按照您的意愿在 React 中实现相同的方式。

let users = [
        { 
          name: "Amoos",
          skills: ["PHP", "MySQL"]
        },
        {
          name: "Rifat",
          skills: ["JavaScript", "React", "HTML"]
        }
    ];
    

  users.map(( user, index ) => { 
          console.log(`User: ${user.name}`)
          {
            user.skills.map(( skill, subIndex) => {
              console.log(`Skill # ${subIndex}: ${skill} `)     
            })
          }
      }
    )
Run Code Online (Sandbox Code Playgroud)