javascript - React - 数组中的每个 child .. 独特的 "key" Prop 警告

标签 javascript reactjs components

我似乎对这个原则有一个不错的理解,这让我能过得去,直到现在。我正在对所有迭代器的所有子级应用一个 key Prop ,但我仍然收到此警告。

一个 FacilitiesContainer 正在呈现一个 FacilitiesComponent,后者又呈现一个 Facilities 列表,后者呈现一个 CoursesCourse 不使用迭代器。但是,FacilitiesContainer 通过 HOC 传递 FacilitiesComponent,后者返回最终组件。 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>
);

最佳答案

您确实没有在此处提供 p 元素的键:

{
  data.Courses.map((courseData, index) =>
    <p><Course key={index} data={courseData} /></p>)
}

应该是

{
  data.Courses.map((courseData, index) =>
    <p key={index}><Course data={courseData} /></p>)
}

关于javascript - React - 数组中的每个 child .. 独特的 "key" Prop 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49901076/

相关文章:

javascript - 如何使用 javascript 和 jquery 在某个网页上自动执行某些操作?

javascript - 在Reactjs中管理状态时遇到麻烦

components - Sparx Enterprise Architect (EA) 中的嵌套组件

flash - 是否有像 Flash 那样的预先编写的类似 Silverlight Web 小部件的组件?

delphi - 是否有适用于 Delphi(非 OLE)的 OpenOffice.org 导出组件?

javascript - 如何用数字链接替换数字

javascript - 使用 jQuery 中的 onchange 函数从多个动态记录中获取选择选项值?

javascript - 后续调用 reloadData() 时, Angular 数据表有效负载格式不会更改

reactjs - 如何获取renderHook的返回值

reactjs - 使用promise/thunk将参数通过action传递给reducer