React JSX ListItem 键连接
React JSX ListItem Key concat
为了模块化我的应用程序,我正在动态创建列表。数据显示正常,但是,我无法获得唯一的列表项 ID。我正在尝试将键设置为正在映射的数组项与道具连接。
render() {
return (
<div>
<Header as='h3'>{this.props.data['Day'+this.props.day]}</Header>
<ul>
{this.props.cities.map((park) => <li key={park+this.props.day}>{park} {this.props.data[park+'Day'+this.props.day+'PrecipPercent']}</li>)}
</ul>
</div>
)
}
我通过这个片段调用组件
let eachDay = [];
for (var i = 0; i < this.state.days; i++) {
eachDay.push(<MultiParkDetails cities={this.state.sortedCities} data={this.state.weatherData} cols={5} day={i}></MultiParkDetails>);
}
return ({eachDay})
这里的问题是您需要将密钥添加到组件本身,在该组件中创建组件并将其推送到数组中。
let eachDay = [];
for (var i = 0; i < this.state.days; i++) {
eachDay.push(<MultiParkDetails key={ uniqueKeyGoesHere} cities={this.state.sortedCities} data={this.state.weatherData} cols={5} day={i}></MultiParkDetails>);
}
return ({eachDay})
您不要将键放在单个组件中,而是在实际通过映射将它们推入数组时声明它,或者在本例中使用 for each 循环。
查看您的回答,您的回答正确无误:
{this.props.cities.map((park) => <li key={park+this.props.day}>{park} {this.props.data[park+'Day'+this.props.day+'PrecipPercent']}</li>)}
只要连接的值是唯一的。如果您在此之后收到任何警告,请在此处 post 提出警告。您会收到两个警告之一,一个是您没有在需要的地方设置密钥,第二个是警告说发现了重复的密钥,这意味着您没有使用足够独特的密钥。
有关密钥的更多信息,请在此处查看 facebook 文档:https://facebook.github.io/react/docs/lists-and-keys.html#keys
简单地说,你可以使用数组的索引作为键,它永远是唯一的。使用这个:
let eachDay = [];
for (var i = 0; i < this.state.days; i++) {
eachDay.push(<MultiParkDetails key={i} cities={this.state.sortedCities} data={this.state.weatherData} cols={5} day={i}></MultiParkDetails>);
}
return ({eachDay})
为了模块化我的应用程序,我正在动态创建列表。数据显示正常,但是,我无法获得唯一的列表项 ID。我正在尝试将键设置为正在映射的数组项与道具连接。
render() {
return (
<div>
<Header as='h3'>{this.props.data['Day'+this.props.day]}</Header>
<ul>
{this.props.cities.map((park) => <li key={park+this.props.day}>{park} {this.props.data[park+'Day'+this.props.day+'PrecipPercent']}</li>)}
</ul>
</div>
)
}
我通过这个片段调用组件
let eachDay = [];
for (var i = 0; i < this.state.days; i++) {
eachDay.push(<MultiParkDetails cities={this.state.sortedCities} data={this.state.weatherData} cols={5} day={i}></MultiParkDetails>);
}
return ({eachDay})
这里的问题是您需要将密钥添加到组件本身,在该组件中创建组件并将其推送到数组中。
let eachDay = [];
for (var i = 0; i < this.state.days; i++) {
eachDay.push(<MultiParkDetails key={ uniqueKeyGoesHere} cities={this.state.sortedCities} data={this.state.weatherData} cols={5} day={i}></MultiParkDetails>);
}
return ({eachDay})
您不要将键放在单个组件中,而是在实际通过映射将它们推入数组时声明它,或者在本例中使用 for each 循环。
查看您的回答,您的回答正确无误:
{this.props.cities.map((park) => <li key={park+this.props.day}>{park} {this.props.data[park+'Day'+this.props.day+'PrecipPercent']}</li>)}
只要连接的值是唯一的。如果您在此之后收到任何警告,请在此处 post 提出警告。您会收到两个警告之一,一个是您没有在需要的地方设置密钥,第二个是警告说发现了重复的密钥,这意味着您没有使用足够独特的密钥。
有关密钥的更多信息,请在此处查看 facebook 文档:https://facebook.github.io/react/docs/lists-and-keys.html#keys
简单地说,你可以使用数组的索引作为键,它永远是唯一的。使用这个:
let eachDay = [];
for (var i = 0; i < this.state.days; i++) {
eachDay.push(<MultiParkDetails key={i} cities={this.state.sortedCities} data={this.state.weatherData} cols={5} day={i}></MultiParkDetails>);
}
return ({eachDay})