javascript - 在 react-native 中单击登录时如何设置状态?
问题描述
我想在登录后创建抽屉。我不确定我要做什么是对的。如果它是正确的,我该如何回到 App.js 文件中处理 setIsLogin ?
Myapp.js
import LoginScreen from './src/screens/LoginScreen';
export default function App() {
const [isLogin, setIsLogin] = useState(false);
if(isLogin){
return(
//create Drawer here
)
}else{
return(
<LoginScreen/>
)
}
}
登录屏幕.js
const LoginScreen = ({navigation}) => {
const [username, setUsername] = useState("");
const [password, setPassword] = useState("");
const _onPress = async() => {
const payload = {
username:username,
password:password
}
};
return (
<View>
<TouchableOpacity onPress={() => _onPress()} >
<Text style={styles.textButton}>Log in</Text>
</TouchableOpacity>
</View>
)
}
export default LoginScreen;
如果我误解了或者有没有更好的方法,请告诉我,非常感谢。
解决方案
给你,这应该工作:
您可以将 setState 作为父级的引用传递给子级,更新子级的状态,它将重新渲染父级。
import LoginScreen from './src/screens/LoginScreen';
export default function App() {
const [isLogin, setIsLogin] = useState(false);
if(isLogin){
return(
//create Drawer here
)
}else{
return(
<LoginScreen setLoginStatus = {setIsLogin}/>
)
}
}
const LoginScreen = ({navigation, setLoginStatus}) => {
const [username, setUsername] = useState("");
const [password, setPassword] = useState("");
const _onPress = async() =>
{
const payload = {
username:username,
password:password
}
setLoginStatus(true) //Or false depending on the payload response.
};
return (
<View>
<TouchableOpacity onPress={() => _onPress()} >
<Text style={styles.textButton}>Log in</Text>
</TouchableOpacity>
</View>
)
}
export default LoginScreen;
推荐阅读
- c++ - 为什么 pmr::string 在这些基准测试中这么慢?
- python-3.x - 如何确保每个 gRPC 流都更新一次并避免竞争条件?
- r - 数据框、数据清洗
- rx-java2 - 是否有一个 RxJava 主题可以缓存值并在发出后忘记它们?
- php - Symfony 4 中授予未定义的方法
- java - 如何在 Java 中将 http 响应捕获为 Json 对象
- azure - Azure AD:将 AppRole 分配给多个用户
- python - Python - 从列表中搜索数据框中的字符串
- queue - 在双端队列中,我们可以在两端插入和删除。它是否违反队列属性?
- javascript - 无法理解 javascript 函数的输出