通过Javascript中的map函数传入一个键

时间:2016-08-20 20:04:29

标签: javascript coffeescript jsx

我收到有关需要密钥的数组中每个孩子的警告。我之前遇到过这种情况,并且我已经在Coffeescript中解决了这个问题:"Each child in an array should have a unique key prop" only on first time render of page

我知道我必须通过map传递密钥,以便map调用的每个数组都会收到一个唯一的密钥。在Coffeescript中,我可以这样做:

component1 = React.createClass({
    render: () ->
        _.chain(@state.users).map((x) -> <component2 profile={x} key={x.id} />),@).value()
)}

component2 = React.createClass({
render: () ->
    return (
        <div>Test</div>
        <div>Test</div>
    )
})

我试图在Javascript中执行此操作,而不是调用新组件,我只是在同一个组件中调用另一个函数。我仍然收到警告:

export default class About extends React.Component {
    aboutMe(item) {
        return (
            <div className="col-xs-12">
                <div className="about-body">
                    <p>{item.description}</p>
                </div>
            </div>
        )
    }

    render() {
        return (
            <div className="container">
                <div className="row">
                    <div className="col-xs-9">
                        {_.chain(this.props.about).map(this.aboutMe).value()} # How would I pass in a key in this `map`?
                    </div>
                </div>
            </div>
        )
    }

1 个答案:

答案 0 :(得分:2)

如果item具有可用作密钥(demo)的ID(或其他属性),则会执行相同的操作:

aboutMe(item) {
    return (
        <div className="col-xs-12" key={ item.id }>
            <div className="about-body">
                <p>{item.description}</p>
            </div>
        </div>
    )
}