React - 数组中的每个子项..唯一的"关键"道具警告

Fir*_*php 4 javascript components reactjs

我似乎对这个校长有一个很好的理解,这让我可以顺便过去,直到现在.我正在为所有迭代器的所有孩子应用一个关键道具,但我仍然得到这个警告.

A FacilitiesContainer渲染a FacilitiesComponent,后者又渲染一个列表Facilities,其中列出了一个列表Courses.A Course不使用迭代器.然而,FacilitiesContainer正在FacilitiesComponent通过一个HOC,它正在返回最终组件.HOC中没有任何内容可以修改传递的组件,所以我不确定这是否是一个问题.

// The render method of FacilitiesContainer 
render = () => {
    let FacilitiesWithSearch = SearchHOC(
      BasicSearch, 
      FacilitiesComponent, 
      {data: this.state.facilities }
    );
    return <FacilitiesWithSearch />;
  }


class FacilitiesComponent extends Component {
  renderFacilities = () => (
    this.props.data.map((facilityData, index) =>
      <Facility key={index} data={facilityData} />
    )
  )

  render = () => (
    <Grid>
      <Row>
        <Col xs={12} sm={8} smOffset={2} md={8} mdOffset={1}>
          {
            this.props.data.length > 0
              ? this.renderFacilities()
              : <div>No results</div>
          }
        </Col>
      </Row>
    </Grid>
  )
}

const Facility = ({ data }) => (
  <Panel>
    <Panel.Heading>
      <Panel.Title>{data.Name}</Panel.Title>
    </Panel.Heading>
    <Panel.Body>
      <Grid>
        <Row>
          <p><b>Address:</b><br />
            {data.Street}<br />
            {data.City}, {data.State} {data.Zip}
          </p>
          <p><b>Phone:</b> {data.Phone}</p>
            {
              data.Courses.map((courseData, index) =>
                <p><Course key={index} data={courseData} /></p>)
            }
        </Row>
      </Grid>
    </Panel.Body>
  </Panel>
);
Run Code Online (Sandbox Code Playgroud)

dfs*_*fsq 8

你确实没有p在这里提供元素的键:

{
  data.Courses.map((courseData, index) =>
    <p><Course key={index} data={courseData} /></p>)
}
Run Code Online (Sandbox Code Playgroud)

应该

{
  data.Courses.map((courseData, index) =>
    <p key={index}><Course data={courseData} /></p>)
}
Run Code Online (Sandbox Code Playgroud)