javascript - 如何使用 react-native 在更新 asyncstorage 时更新 app.js
问题描述
应用程序.js
const App = () => {
const [auth, setAuth] = useState(false);
useEffect(() => {
readData();
}, []);
const readData = async () => {
try {
const userAge = await AsyncStorage.getItem('token')
if (userAge !== null) {
setAuth(true)
}
} catch (e) {
alert('Failed to fetch the data from storage')
}
}
return (
<>
{
auth ? (
<Index />
) : (
<NavigationContainer>
<Tab.Navigator initialRouteName="Login">
<Tab.Screen name="Login" component={Login} />
</Tab.Navigator>
</NavigationContainer>
)
}
</>
)
}
export default App;
登录.js
const Login = ({navigation}) => {
const submitHandler = async(values) => {
console.log(values);
AsyncStorage.setItem('token', 'dd');
};
return (
<View style={styles.container}>
<Text style={styles.heading}>Sign in to get Started</Text>
<Formik
validationSchema={loginValidationSchema}
initialValues={{ email: '', password: '' }}
onSubmit={values => submitHandler(values)}
>
{({
handleChange,
handleBlur,
handleSubmit,
values,
errors,
isValid,
}) => (
<>
<Text style={styles.head}>Email:</Text>
<TextInput
name="email"
placeholder="Email"
style={styles.input}
onChangeText={handleChange('email')}
onBlur={handleBlur('name')}
value={values.email}
/>
{errors.email &&
<Text style={{ fontSize: 10, color: 'red' }}>{errors.email}</Text>
}
<Text style={styles.head}>Password:</Text>
<TextInput
name="password"
placeholder="password"
style={styles.input}
onChangeText={handleChange('password')}
onBlur={handleBlur('password')}
value={values.password}
/>
{errors.password &&
<Text style={{ fontSize: 10, color: 'red' }}>{errors.password}</Text>
}
<Button
onPress={handleSubmit}
title="Login"
style={styles.button}
disabled={!isValid}
/>
<Text style={styles.signup}>Forget Password?</Text>
<Text style={styles.register}>Register as a Vendor/Driver Here</Text>
<Text style={styles.signup}>Signup Here</Text>
</>
)}
</Formik>
</View>
)
}
我正在尝试制作受保护的屏幕,如果用户未登录,他将无法访问该屏幕更新 index.js。我是本地人的新手,这是我的第一个项目并被困在这里。任何形式的帮助都将不胜感激
解决方案
推荐阅读
- python - 如何将 csv 文件的行转换为对象列表?
- c# - Visual Studio Windows 应用程序 - 在标签中显示数字
- c - 为什么将函数作为函数的参数传递?
- regex - 星期几/月份范围内的较短正则表达式
- excel - Range.AdvancedFilter 产生不一致的结果
- reactjs - 以 NAME 为键将数据写入 Firebase
- cakephp - 创建查询以通过具有逻辑析取的多个数据关联过滤结果
- botframework - 如何使用 Bot Framework 发送主动对话
- c# - UWP:从字节数组创建 InMemoryRandomAccessStream 的最快方法
- java - 如何将通信形式从 Java 转换为 Python