Luc*_*let 45 javascript reactjs
我的项目遇到了一些麻烦.任何人都可以向我解释为什么我不能使用它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>
)
}
}
Run Code Online (Sandbox Code Playgroud)
我试图使用该方法访问菜单组件中的设置update.见下面的菜单:
module.exports = class Menu extends React.Component {
render (){
return (
<div>
<Button space="home" className="home" txt="Home" onClick={this.props.onClick}/>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
我真的想知道为什么我可以访问txt和space使用值e.target.我已阅读文档并寻找其他来源,但我还没有答案,但我希望有一种方法可以做到.
Ale*_* T. 61
update方法中的第一个参数是SyntheticEvent包含公共属性和方法的对象event,它不是对具有属性的React组件的引用props.
如果你需要传递参数来更新方法,你可以这样做
onClick={ (e) => this.props.onClick(e, 'home', 'Home') }
Run Code Online (Sandbox Code Playgroud)
并在update方法中获取这些参数
update(e, space, txt){
console.log(e.target, space, txt);
}
Run Code Online (Sandbox Code Playgroud)
event.target为您提供本机DOMNode,然后您需要使用常规DOM API来访问属性.例如getAttribute或dataset
<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);
}
Run Code Online (Sandbox Code Playgroud)