需要访问在 `map` 函数中创建的被点击的 `li` 的 `id`

Need to access the `id` of clicked `li` created inside `map` function

我正在渲染 'rows' 个职位列表,这些职位列表由 li 个元素表示,这些元素是通过调用 map 对包含职位列表数组的道具创建的。

每个 li 都有一个 onClick 处理程序,我需要在其中访问与单击的行关联的 id 以显示职位列表的详细信息页面 id。请注意,map 将职位列表的 id 值添加为 li 元素的 key 属性。

map 函数看起来像这样:

var jobListRow = this.props.joblists.map(function(jobrowobj) {
  return (
    <li key={jobrowobj.id} onClick={this.handleClick}>
      <div>bla bla</div>
      <span>bla bla</span>
    </li>
  );
});

onClick 处理程序如下所示:

handleClick: function(event) {
  console.log(event.target);
}

在处理程序中,我希望使用单击的 litarget 来获取 likey 属性 的值,但是返回的 target 似乎每次都不同,并且恰好是 li 的不同子元素。如何访问被单击的 likey?或者,换句话说:我如何访问被点击的职位列表的 id

这应该可行,您需要具有正确的上下文绑定:

var jobListRow = this.props.joblists.map(function(jobrowobj, i){
    return(
        <li key={jobrowobj.id} onClick={this.handleClick.bind(this,i)}>
            <div>bla bla</div>
            <span>bla bla</span>
        </li>
    )
});

 handleClick: function(i) {
    console.log('You clicked: ' + this.props.joblists[i]);
 }

在此处找到此实现:https://facebook.github.io/react/tips/communicate-between-components.html

看来它符合您的需求。希望对您有所帮助

map 函数可以选择将 'this' 作为第二个参数传递。我是这样做的。

    var vm = this;
    var jobListRow = this.props.joblists.map(function(jobrowobj){
        return(
            <li key={jobrowobj.id} id={jobrowobj.id} onClick={this.handleClick}>
                <div>bla bla</div>
                <span>bla bla</span>
            </li>
        )
    }, vm);

    handleClick: function(event) {
      console.log('You clicked: ' + event.target.id);
    }