如何在 ReactJS 中调用相同 class 内的方法?
How to call method inside the same class in ReactJS?
我想在同一个 class 中调用方法。比如我点击一个按钮,就会触发方法handleLoginBtnClicked()
。我希望它会在同一个 class 中调用方法 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
您需要将这些函数绑定到组件的上下文。在 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() {
...
}
...
..
.
}
你在哪里绑定handleLoginBtnClicked
?您可能会丢失函数上下文并丢失特殊变量 this
的含义。 React 将处理并触发 onClick
事件,从不同的上下文调用该函数,这就是它丢失的原因。
您应该使用以下语法创建新的绑定函数以添加为 onClick 事件的事件侦听器。这将确保 handleLoginBtnClicked
的上下文不会丢失。
<element onClick={this.handleLoginBtnClicked.bind(this)}>
我想在同一个 class 中调用方法。比如我点击一个按钮,就会触发方法handleLoginBtnClicked()
。我希望它会在同一个 class 中调用方法 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
您需要将这些函数绑定到组件的上下文。在 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() {
...
}
...
..
.
}
你在哪里绑定handleLoginBtnClicked
?您可能会丢失函数上下文并丢失特殊变量 this
的含义。 React 将处理并触发 onClick
事件,从不同的上下文调用该函数,这就是它丢失的原因。
您应该使用以下语法创建新的绑定函数以添加为 onClick 事件的事件侦听器。这将确保 handleLoginBtnClicked
的上下文不会丢失。
<element onClick={this.handleLoginBtnClicked.bind(this)}>