React:将键控子项发送到组件。键始终为空

时间:2016-03-27 19:38:42

标签: reactjs redux react-redux

我在将键控元素发送到子元素时遇到问题,该子元素将按键过滤掉这些子元素。我们的想法是通过键将处理程序映射到子项,处理程序将切换键以进行过滤。我知道使用索引作为关键是反模式,但是这里发生了什么?我总是收到错误"Warning: Each child in an array or iterator should have a unique "key" prop.

render: function() { return ( <Frame> <Frame> <Navbar isLoggedIn={true} handlers={this.handlers}> {this.props.children.map(function(child, i) { return ( <button onClick={this.handlers[i]}>{child.props.text || 'Checkout item ' + i}</button> ) }.bind(this))} </Navbar> </Frame> {this.props.isLoading ? <Loading /> : <Filter filter={function(child) { return String(this.props.displayed) === child.key; }.bind(this)}> {this.props.children.map(function(child, i) { return (<div key={i}><child /></div>) })} </Filter>} </Frame> ) }

function Filter (props) { return ( <div> {Array.isArray(props) ? props.children.filter(function(child) { return props.filter(child); }) : props.children} </div> ) };

1 个答案:

答案 0 :(得分:2)

您需要将密钥传递给正在迭代的任何DOM元素。 <button>中缺少您。

<Navbar isLoggedIn={true} handlers={this.handlers}>
  {this.props.children.map(function(child, i) {
    return (
      <button key={i} onClick={this.handlers[i]}>{child.props.text || 'Checkout item ' + i}</button>
    )
  }.bind(this))}
</Navbar>