如何在ReactJS的父组件内部获取事件目标

时间:2019-03-27 12:10:56

标签: javascript reactjs

我有一个带有代码的主要组件

changeColor = (color) => {

}

toggle = (e) => {
  console.log(e.target)
}

<div>
  <EditComponent changeColor={this.changeColor.bind(this)}>
  <TextComonent toggle={this.toggle.bind(this)}>
</div>

编辑组件

color = (value) => {
  this.props.changeColor(value)
}
<div>
  <button value='red' onClick={this.color.bind(this,"red")}>Red</button>
  <button value='blue' onClick={this.color.bind(this,"blue")}>Blue</button>
</div>

文本组件

toggle = (e) => {
  this.props.toggle(e)
}
<div>
  <p class="black-color" onClick={this.toggle.bind(this)}>Text 1</p>
  <p class="black-color" onClick={this.toggle.bind(this)}>Text 2</p>
</div>

我将首先单击Text 1Text 2,然后在event函数中获得toggle。接下来,我将单击按钮RedBlue。然后,我想将我之前单击过的特定red-color的类更改为blue-colorText。我如何在父组件中获取事件以找到特定的text或有其他方法可以做到这一点?

我想在父组件中获取event.target。我在父对象中获得了event对象,但event.targetnull

3 个答案:

答案 0 :(得分:1)

<div>
 <EditComponent changeColor={this.changeColor.bind(this)}>
 <TextComonent toggle={this.toggle}>
 </div>

以这种方式尝试不要在父组件中绑定功能,然后尝试,您将获得目标

答案 1 :(得分:0)

您没有正确使用“绑定”。您不需要绑定匿名函数。

class Hello extends React.Component {
  render() {
    return (
    <div>
      <p onClick={(e) => this.toggle(e)}>
        Test
      </p>
    </div>);
  }

  toggle = (e) => {
    console.log(e.target.innerText);
    }
}

通过切换事件变量,您可以根据需要执行更改。

答案 2 :(得分:0)

我找到了添加event.persist();以获得父组件内部event.target的确切解决方案。