当前位置: 首页 > 面试题库 >

div的id属性未定义/未在react应用中的onClick上捕获

黎承颜
2023-03-14
问题内容

我正在映射来自api响应的数据,并从中渲染出多个div。除此之外,我还要从响应中为每个div的id属性分配一个唯一的id,如下所示:

...lists.map(list => {
  return (
  <div className='one' key={list.id} id={list.id} onClick={this.handleClick}>
    <div className='two'>
      <p>Hello World</p>
      <span>Foo Bar</span>
    </div>
  </div>
)
})

handleClick = (e) => {
  console.log(e.target.id)
  // other stuff
}

问题:

只要className='one'单击外部div(),控制台就会记录未定义的日志。但是,如果我将id值分配给内部div(className='two'),则
只有在内部div的尺寸范围内单击时 ,它才会记录id的值。<span><p>标签也是如此。

基本上,onClick在单击不同的html元素时返回一个不同的目标。

预期结果:

单击父div或该div内的任何位置,都应始终返回父div的id属性的值。


问题答案:

问题是当您onClicktopMost父项上定义时,您需要使用e.currentTarget.id而不是,e.target.id因为e.target它将为您提供您单击的元素,而不是onClick定义了侦听器的父项

class App extends React.Component {

state = {

  lists: [{id: 1}, {id: 2}, {id:3}]

}

render() {

  return (

    <div>

      {this.state.lists.map(list => {

          console.log(list.id)

          return (

          <div className='one' key={list.id} id={list.id} onClick={this.handleClick}>

            <div className='two'>

              <p>Hello World</p>

              <span>Foo Bar</span>

            </div>

          </div>

        )

       })

       }

    </div>

  )

}



handleClick = (e) => {

  console.log(e.currentTarget.id)



  // other stuff

}



}



ReactDOM.render(<App/>, document.getElementById('app'));


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>

<div id="app"></div>


 类似资料:
  • 问题内容: 我正在尝试为网站添加 自定义表情的用户脚本 。但是,我遇到了很多错误。 这是函数: 该标签的调用该函数: 每次单击具有属性的按钮时,都会出现此错误: 未捕获ReferenceError:函数未定义。 任何帮助,将不胜感激。 谢谢! 我尝试使用: 但是我有一个错误。 这是脚本。 我试图这样做来测试听众是否正常工作,但他们不适合我: 问题答案: 切勿使用或用户脚本中的类似属性!在常规网页中

  • 我正在尝试为一个网站做一个用户脚本来添加自定义的表情。然而,我已经得到了很多错误。 函数如下: 标记的调用此函数: 每次单击具有属性的按钮时,都会出现以下错误: 未捕获得ReferenceError:未定义函数. 我尝试使用: 但我得到一个错误。 这是剧本。 我试着这样做来测试监听器是否对我有效,而它们对我无效:

  • 我试图显示在react for Elasticsearch中运行查询得到的结果,但我无法做到这一点。它给出了错误,但当我在一个变量中运行相同的查询时,它返回currect结果。有人能告诉我如何在“results”数组中存储结果以及如何在网页中显示结果吗?在以下方面获取错误:

  • 我相信我将正确的索引值从传递到,再传递到。但是,在我的文件中抛出一个错误,该错误声明: 在开始将函数传递给组件之前,我的代码运行良好。 dashboard.js Bldgs.JS

  • 使用“react-router-dom”:“^4.1.2”,“react-router-redux”:“^5.0.0-alpha.6”,在重定向完成后,我在console.log()中得到标题“uncatted typeerror:不能读取未定义的reacted Router redux的属性”type“。截图显示,包含有效载荷数据的可观察动作没有问题。有效负载包含表单数据(值)和历史对象。我设法

  • 问题内容: 我收到以下错误 未捕获的TypeError:无法读取未定义的属性’setState’ 即使在构造函数中绑定了delta之后。 问题答案: 这是由于不受约束。 为了绑定设置在构造函数中: 当前,您正在调用绑定。但是bind返回一个绑定函数。您需要将函数设置为其绑定值。