如何在函数映射中获取 ReactJS 中元素的 id?

How to get id of elements in ReactJS in function map?

如何在 map 函数中获取列表元素的 ID?

export default class PhotoSlider extends Component {
    handleSort(value) {
        console.log(value)
    }

    render() 
    {
        return photo.map((entry, index) => <Link to='#' onClick={() => this.handleSort(entry.id)}>... </Link>)
    }
}

控制台只打印最后一个元素的id

in cnsole when click on links

使用onClick={() => this.handleSort(entry.id)}不会在点击的时候调用你的函数,它会把你的函数returns赋值给点击事件。

以下代码预先配置您的函数以使用箭头函数发送条目的 ID 和点击事件参数:

export default class PhotoSlider extends Component {
    handleSort = value => event => {
        console.log(value)
    }

    render() 
    {
        return photo.map(entry => <Link to='#' onClick={this.handleSort(entry.id)}>... </Link>)
    }
}

此外,在使用地图时不要忘记为您的组件添加一个键:

photo.map(entry => <Link to='#' key={entry.id} onClick={this.handleSort(entry.id)}>... </Link>)

此外,请尝试在提问时正确缩进您的代码,就像我在编辑您的问题时所做的那样(例如)


编辑:我想我明白了:
在 React 中,您的渲染函数应该发送单个 HTML 节点,这可能是为什么只使用最后一个 Link 的原因。

如果您使用的是最新版本的 React,您可以将地图包装在片段中:

export default class PhotoSlider extends Component {
    handleSort = value => event => {
        console.log(value)
    }

    render() 
    {
        return (
            <>
                {photo.map(entry => <Link to='#' onClick={this.handleSort(entry.id)}>... </Link>)}
            </>
        )
    }
}

否则,只需使用 div(或 React.Fragment):

export default class PhotoSlider extends Component {
    handleSort = value => event => {
        console.log(value)
    }

    render() 
    {
        return (
            <div>
                {photo.map(entry => <Link to='#' onClick={this.handleSort(entry.id)}>... </Link>)}
            </div>
        )
    }
}