我在反应中调试我的代码,并且我有一个不符合我预期的元素。
<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>
)
}
}
答案 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