如何在 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)}>