Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过;这";在react js中指向事件启动器?_Javascript_Reactjs_React Jsx_Material Ui - Fatal编程技术网

Javascript 如何通过;这";在react js中指向事件启动器?

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

我试图将buttons对象传递给函数,并从该函数访问其属性。 我的按钮:

<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);
}