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

将event.target与React组件一起使用

黄宏大
2023-03-14
问题内容

我的项目遇到了麻烦。谁能向我解释为什么我不能使用e.target来访问className

下面是我的切入点的代码:

import React from 'react'
import ReactDOM from 'react-dom'
import Button from './Button'
import Menu from './Menu'

function test(e){
    console.log(e.target.ref)
 }

module.exports = class Content extends React.Component {
    constructor(props){
        super(props)
        this.state={content: ''}
    }

update(e){
    console.log(e.target.txt)

}

render (){
    return (
        <div id="lower">
            <div id="menu">
               <Menu onClick={this.update.bind(this)}/>
            </div>
            <div id="content">
                {this.state.content}
            </div>
        </div>
    )

  }
}

我正在尝试使用该方法访问“ 菜单” 组件中的设置update。请参阅下面的 菜单

module.exports = class Menu extends React.Component {

    render (){
       return (
           <div>
               <Button space="home" className="home" txt="Home" onClick={this.props.onClick}/>

        </div>
       )

    }
}

我真的很想知道为什么我可以使用来访问txtspacee.target。我已经阅读了文档并寻找了其他资源,但是我还没有答案,但是我希望有办法可以做到。


问题答案:

updatemethod中的第一个参数是SyntheticEvent包含任何属性和方法的对象event,它不引用存在属性的React组件props

如果您需要传递参数来更新方法,可以这样做

onClick={ (e) => this.props.onClick(e, 'home', 'Home') }

并在update方法中获取这些参数

update(e, space, txt){
   console.log(e.target, space, txt);
}

Example

event.target为您提供native DOMNode,那么您需要使用常规的DOM
API来访问属性。例如getAttributedataset

<button 
  data-space="home" 
  className="home" 
  data-txt="Home" 
  onClick={ this.props.onClick } 
/> 
  Button
</button>

onClick(e) {
   console.log(e.target.dataset.txt, e.target.dataset.space);
}

Example



 类似资料:
  • 问题内容: 抱歉,我缺乏知识,但我是新手,目前正在学习React。我只是想问一下是否要在我的React应用程序中使用Bootstrap 4,是否必须安装jQuery?我在某处读到,将jQuery与React一起使用是不行的。所以现在我想知道。谢谢回复。您的意见和建议是真正的赞赏。 问题答案: 某些功能(例如下拉菜单,模式)需要JS来操纵DOM,而引导程序则使用jQuery来处理DOM操纵。 但是,

  • 问题内容: 我用Webpack和react-rounter构建一个项目。这是我的代码: 当我请求时,就可以了!但是地址有误。查看错误消息:在此处输入图片描述 我的WebpackDevServer配置为: 我不知道怎么回事,帮帮我! 问题答案: 您正在使用相对路径来描述index.html中bundle.js的路径。 您应该在index.html中为bundle.js使用绝对路径 绝对路径包含根目录

  • 问题内容: 使用,为什么它对(原始类型)和数组显示不同的列表大小? a)对于数组,每当我执行以下程序时,列表大小= 1 b)但是,如果我从数组类型更改为array(如),则列表大小为4,我认为这是正确的。 PS :使用(包装类)数组,则结果很好,但是我不确定为什么在原始数组中列表大小为1。请解释。 问题答案: 由于Java泛型而无法保存原始值(请参阅类似的问题)。因此,当您调用Arrays 时,将

  • 我想使用的与chrome API,但我遇到了一个问题... 我尝试了以下操作,但chrome API无法将识别为函数,因此我尝试先将保存为变量。。。 但是当我尝试以下操作时,仍然是一个空字符串。我不明白为什么,因为被设置为。我怎样才能解决这个问题? 编辑 我把剧本叫做... 在剧本里我有以下内容... 其中函数只返回一个字符串。它是由我的捕获的,我通过打印到if语句内的控制台来验证它。 我注意到是

  • 使用React-Native并尝试学习ES6语法。我昨天也遇到了类似的问题,并得到了解决方案。我补充说 .绑定(这个) 到我的我的函数调用和问题解决。我在另一个函数调用中再次遇到了同样的问题,我无法跟踪到底发生了什么。错误消息是相同的。

  • 现在,我正在Java EE 7应用程序上使用JMS 2.0和Artemis 1.2.0,我想用Camel做一些集成任务。 目前,在查看驼峰jms文档时,没有提到如何使用通用驼峰jms组件向任何符合jms 2.0的代理生成和使用消息。 组件文档中的唯一示例是使用Spring DSL使用专用的ActiveMQ组件配置ActiveMQ连接工厂。如何配置骆驼JMS的连接以连接到我的Artemis实例? 考