我想在同一个类中调用该方法。例如,当我单击一个按钮时,它将触发方法checkInputValidation()
。我希望它会在同一个类中调用方法export default class LoginCard extends React.Component {
//If I click a button, this method will be called.
handleLoginBtnClicked() {
this.checkInputValidation();
}
checkInputValidation() {
alert("clicked");
}
...
...
...
render() {
...
<LoginBtn onClick={this.handleLoginBtnClicked}/>
...
}
}
。这样做的正确方法是什么?
Uncaught TypeError: this.checkInputValidation is not a function
错误讯息:
{{1}}
答案 0 :(得分:6)
您需要将这些函数绑定到组件的上下文。在constructor
内,你需要这样做:
export default class LoginCard extends React.Component {
constructor(props) {
super(props);
this.handleLoginBtnClicked = this.handleLoginBtnClicked.bind(this);
this.checkInputValidation = this.checkInputValidation.bind(this);
}
//This is the method handleLoginBtnClicked
handleLoginBtnClicked() {
...
}
//This is the method checkInputValidation
checkInputValidation() {
...
}
...
..
.
}
答案 1 :(得分:2)
你绑定handleLoginBtnClicked
的位置是什么?您可能正在丢失函数上下文并失去特殊变量this
的含义。 React将处理并触发onClick
事件,从不同的上下文调用该函数,这就是它丢失的原因。
您应该使用以下语法创建一个新的绑定函数,以添加为onClick事件的事件侦听器。这将确保handleLoginBtnClicked
的上下文不会丢失。
<element onClick={this.handleLoginBtnClicked.bind(this)}>