【发布时间】:2021-04-05 06:30:46
【问题描述】:
场景:
我有一个Login.js,我在多个屏幕上显示为Modal,无论我在哪里放置了检查以查看用户是否已登录。用户成功登录后,我使用AsyncStorage 将名为LoggedIn 的密钥从0 更改为1。现在,当用户成功登录并且Modal 关闭时,我想重新渲染 scree 用户。
因为我有 iOS 的背景,所以我们有 viewDidAppear 每次有 Modal 或用户打开另一个应用程序并返回屏幕等时运行。
那么,什么是 React Native 中的等价物?当模态关闭时,它应该检查LoggedIn 值是否在AsyncStorage 中发生更改,并且我已经准备好组件以根据LoggedIn 值的值进行渲染。
代码:
我有一个屏幕 Profile.js 我正在检查:
AsyncStorage.getItem("LoggedIn").then((value) => {
if (value === "1") {
setNeedLogin(true)
} else {
setNeedLogin(false)
}
});
const [needLogin, setNeedLogin] = useState(false);
基于上述状态,我将视图呈现为:
{
!needLogin &&
<View>
<Text>{userName}</Text>
<Text>{userEmail}</Text>
<TouchableOpacity>
<Text>Logout</Text>
</TouchableOpacity>
</View>
}
{
needLogin &&
<View>
<Text>You are not logged in</Text>
<Text>Please login or create a new account to see more information.</Text>
<TouchableOpacity onPress={() => {
alert('I am showing login screen here which is a modal')
}}>
<Text>Login or Sign Up</Text>
</TouchableOpacity>
</View>
}
现在当Login.js 呈现Modal 并在成功登录后使用登录时,我将LoggedIn 的值更改为1 并关闭显示Profile.js 屏幕的模式,但当它显示它时视图不会重新渲染。那么,每次出现profile.js 视图时如何检查和更改状态?
【问题讨论】:
标签: javascript reactjs react-native viewdidappear