Javascript 如何通过;这";在react js中指向事件启动器?
我试图将buttons对象传递给函数,并从该函数访问其属性。 我的按钮:Javascript 如何通过;这";在react js中指向事件启动器?,javascript,reactjs,react-jsx,material-ui,Javascript,Reactjs,React Jsx,Material Ui,我试图将buttons对象传递给函数,并从该函数访问其属性。 我的按钮: <RaisedButton label="Primary" id = "1" onTouchTap={()=>this.buttonPress(this)} primary={true} /> 所有代码都在一个单独的组件中,我在主组件中使用这个组件。问题是当我按下按钮时,它没有将buttons对象传递给它正在发送整个组件的函数。如何仅获取buttons对象?最好的方法是: onTouchTap={th
<RaisedButton label="Primary" id = "1" onTouchTap={()=>this.buttonPress(this)} primary={true} />
所有代码都在一个单独的组件中,我在主组件中使用这个组件。问题是当我按下按钮时,它没有将buttons对象传递给它正在发送整个组件的函数。如何仅获取buttons对象?最好的方法是:
onTouchTap={this.buttonPress.bind(this, someProperty)}
使用如下事件处理程序:
buttonPress (someProperty) {
console.log(someProperty);
}
因此,您不必访问RaisedButton属性,只需将事件处理程序与所需的道具绑定即可。编辑:正如Ardentum所指出的,我的原始答案(如下)记录了DOM元素。尝试这样做:
<RaisedButton
ref={(button) => { this.RaisedButton = button; }}
onTouchTap={()=>this.buttonPress( this.RaisedButton )}
/>
然后
buttonPress = (event) => {
console.log(event.target);
}
在纯javascript中,您可以使用
event.target
。您仍然可以在React中这样做onTouchTap={event=>this.buttonPress(event.target)}
onTouchTap={this.buttonPress.bind(this)}
没有工作。在本例中,事件中,我根据单击按钮的位置(文本或非文本)不断获取span
或div
@rlemonIn。目标指的是DOM节点,而不是React组件。我尝试了这个方法。如果我单击按钮的文本,它将返回一个
,如果我在框内而不是文本上单击,它将返回一个
。两者都不向我返回RaisedButton
@JanStachera它正在工作并向我提供RaisedButton
对象,但我是否有办法访问它的属性?我尝试了event.target.id
和event.id
都没有返回我的id。你能帮我解决这个问题吗?我也非常感谢你的帮助@JanStacherai尝试了bind(this,id)
和bind(this,this.id)
。第一个给我错误,第二个什么也不返回。在您的示例中,您可以将其作为常量传递:onTouchTap={this.buttonPress.bind(this,1)}
。Bind是一个很好的例子。作为参数传递的变量只是当前范围中的一个变量。
onTouchTap={(event)=>this.buttonPress(event)}
buttonPress = (event) => {
console.log(event.target);
}