基本上在login
中,我有一个函数可以验证 token 是否存在,如果存在,则自动重定向到home
View ,否则它将保留在 >登录
查看。
登录
const Login = props => {
const [loading, setLoading] = useState(true);
useEffect(() => {
getTokenPrevious();
}, [loading]);
const getTokenPrevious = () => {
AsyncStorage.multiGet(["token"])
.then(value => {
let token = value[0][1];
if (token !== null) {
props.navigation.navigate("home");
} else {
setLoading(false);
}
})
.catch(error => {
setLoading(false);
});
};
if (loading) {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>Loading...</Text>
<Spinner color={STYLES.bgHeader.backgroundColor} />
</View>
);
}
return (
rest code login....
有时,当我在主页
View 中使用手机的后退按钮
时,或者当我尝试点击注销
按钮时,会出现此情况将我重定向到登录
View ,但显示了这部分:
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>Loading...</Text>
<Spinner color={STYLES.bgHeader.backgroundColor} />
</View>
);
应该显示的部分是这样的:
return (
rest code login....
因为 token 已被删除而不再存在。
首页
const Home= props => {
clearStorage = () => {
AsyncStorage.removeItem("token")
.then(() => {
props.navigation.navigate("Login");
})
};
return (
<View>
<Button onPress={clearStorage()} ><Text>Logout</Text></Button>
<View>
)
}
我该如何解决这个问题?
最佳答案
<Button onPress={clearStorage()} ><Text>Logout</Text></Button>
clearStorage() 调用该方法,当加载时。 从clearStorgae中删除()。
<Button onPress={clearStorage} ><Text>Logout</Text></Button>
关于reactjs - 当主页 View 导航到登录 View 时,如何触发登录的useEffect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59367698/