this.backPressed 不是函数

this.backPressed is not a function

我在示例中实现了它,它可以工作,但在我的主项目中它显示错误消息,指出 backPressed 不是一个函数。

backPressed = () => {
    setTimeout(function() {
      //Put All Your Code Here, Which You Want To Execute After Some Delay Time.
      BackHandler.exitApp();
    }, 3000);
  };

componentWillUnmount() {
    BackHandler.removeEventListener("hardwareBackPress", this.backPressed);
  }

componentDidMount() {
      BackHandler.addEventListener("hardwareBackPress", this.backPressed);  

}
static getDerivedStateFromProps(nextProps, prevState) {
    const { userdata } = nextProps.UserDetailReducer;

    const { UpdatingFailure } = nextProps.UpdateUserImageReducer;

    if (UpdatingFailure) {
      return {
        avatarSource: ""
      };
    }

    if (userdata.kenkoScore != "" && userdata.kenkoScore > 0) {
      setTimeout(() => {
        AsyncStorage.setItem("SCORE_FETCHED", "Yes");
        nextProps.navigation.navigate("TabNavigation");
      }, 100);
      return null;
    } else {
        ***this.backPressed();***
    }

    if (userdata) {
      return { userDetail: userdata };
    }

    return null;
  }

componentDidMount 中它工作但在 getDerivedStateFromProps 中不工作

getDerivedStateFromPropsstatic,所以 this 指的是 class 本身,而不是 class 的实例。

backPressed 设为静态以便从 getDerivedStateFromProps 调用它。您还需要将 componentWillUnmountcomponentDidMount 更新为 ComponentName.backPressedthis.constructor.backPressed。请注意,将 backPressed 设置为静态意味着您以后将无法访问 this 道具或状态。