使用onClick函数检测正在单击的元素

时间:2018-02-18 02:32:30

标签: javascript reactjs ecmascript-6

我在反应中调试我的代码,并且我有一个不符合我预期的元素。

<li onClick={console.log('li element clicked')}>Hello</li>

我只是想检测一个特定元素是否被点击,我希望当我点击这个li元素时,它应该记录消息&#34; li元素点击&#34;在我的控制台中。但是,情况似乎并非如此。请帮帮忙?

不知何故,通过使用bind(this)修复了我的问题,但是,我并不完全理解为什么。

以下是代码示例:

export class InputQuestion extends React.Component{
constructor(props) {
    super(props)
    this.state = {
        value: '',
    };
}

handleClick = () => {
    console.log('li 1 clicked');
}

render(){
    return (
        <Container>
            <li onClick={this.handleClick.bind(this)}>Hi</li>
            <li onClick={console.log('li 2 clicked')}>Hello</li>
        </Container>
    )
}

}

1 个答案:

答案 0 :(得分:1)

你需要将其作为一种功能来实现,例如。

template<class D> struct MyClass {
  int init() {
    common=42;
    d().InitilalizeData();
    return common;
  }
protected:
  int common;
private:
  D& d() {return static_cast<D&>(*this);}
};
struct Mminus : MyClass<Mminus> {
  void InitilalizeData() {}
};
struct Mplus : MyClass<Mplus> {
  void InitilalizeData() {++common;}
};

并且因为您的<li onClick={() => console.log('li 2 clicked')}>Hello</li> 函数是一个箭头函数,它已经绑定到handleClick所以您可以这样做:

this