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 中不工作
getDerivedStateFromProps
是 static,所以 this
指的是 class 本身,而不是 class 的实例。
将 backPressed
设为静态以便从 getDerivedStateFromProps
调用它。您还需要将 componentWillUnmount
和 componentDidMount
更新为 ComponentName.backPressed
或 this.constructor.backPressed
。请注意,将 backPressed
设置为静态意味着您以后将无法访问 this
道具或状态。
我在示例中实现了它,它可以工作,但在我的主项目中它显示错误消息,指出 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 中不工作
getDerivedStateFromProps
是 static,所以 this
指的是 class 本身,而不是 class 的实例。
将 backPressed
设为静态以便从 getDerivedStateFromProps
调用它。您还需要将 componentWillUnmount
和 componentDidMount
更新为 ComponentName.backPressed
或 this.constructor.backPressed
。请注意,将 backPressed
设置为静态意味着您以后将无法访问 this
道具或状态。