传递给子组件

时间:2021-03-01 09:12:12

标签: javascript reactjs react-native

我有两个组件。一位家长叫菜单,一位家长叫食物。所以在菜单中,我有一行代码:

{this.props.menu ? Object.keys(this.props.menu).map((key, index) => 
    <div
      className="tab-pane fade"
      id={key}
      role="tabpanel"
      aria-labelledby={key + "-tab"}
    >
      <Food key={key} menu={this.props.menu}/>
    </div>
  ) : 'loading'
}

所以我试图将“关键”传递给食物并在这行代码中使用,如下所示:

{this.props.menu? this.props.menu[key].map((d) => <h1>{d.name}</h1>) : 'loading'}'

但是,我一直未定义密钥。我从来没有将这样的东西传递给子组件,所以不确定是我传递错误还是其他什么。

2 个答案:

答案 0 :(得分:0)

key 是 react 中的保留属性。框架处理它并将其从 props 集合中删除。因此,当您尝试使用 props.key 访问它时,它是未定义的。 正如@Drew Reese 所说,你最好使用不同的道具名称。

答案 1 :(得分:-1)

可能是你没有定义key的值。

Object.keys(this.props.menu) -> 它会给你一个对象键的数组。

示例 obj = {"a": 1, "b":2}。 Object.keys(obj) --> ["a","b"]

然后你在数组上使用地图。它将遍历数组的每个元素。 Object.keys(obj).map( (key,index) => { } ) ==>。键是数组项,索引是项在数组中的位置。

当我们在 react 中循环重复项时使用键。

{this.props.menu? this.props.menu.map((d) => <h1 key={d.name}>{d.name}</h1>) : 'loading'}'