反应:组件无法识别功能

时间:2019-11-18 16:18:39

标签: javascript reactjs

在我的App组件中,我调用 checkUserAuth()方法以检查用户是否登录,并根据此呈现不同的内容。当我通过componentDidMount()方法调用它时,它工作正常,但是如果我尝试通过另一种方法调用它,则它不起作用:

TypeError: this.checkUserAuth is not a function

在我的代码中:

class App extends React.Component {

  constructor() {
    super();

      this.state = {
      loggedIn: false
      };

      this.checkUserAuth = this.checkUserAuth.bind(this);
  }

  componentDidMount(){
      this.checkUserAuth(); // here this method can be called
  }

  checkUserAuth(){
    const loggedUser = AuthService.isAuthenticated();
    if(loggedUser){
    store.dispatch(actions.loginSuccess());
    this.setState({loggedIn: true});
    }
  }


  logoutUser(){
    store.dispatch(actions.logout());
    this.checkUserAuth(); // here it return errors
  }

我该如何解决?

1 个答案:

答案 0 :(得分:3)

将其放入构造函数中:

this.logoutUser = this.logoutUser.bind(this);

此外,如果发现总是绑定内容很繁琐,请考虑使用自动绑定库。我使用react-autobind