react-native - 状态未在指定函数内更新
问题描述
所以我试图像这样改变我的状态
export default function RegisterScreen({navigation}) {
const {register, control, handleSubmit, errors} = useForm({
resolver: yupResolver(schema),
});
const [state, setState] = useState({current_state: 'initial'});
const onSubmit = (data) => {
console.log(state.current_state);
setState({current_state: 'login_process'});
console.log(state.current_state);
});
}
里面提交。但是状态没有改变它被卡住了initial
然后我正在尝试这样做
console.log(this.state.current_state);
this.setState({current_state: 'login_process'}, () => {
console.log(this.state.current_state);
});
但我得到这个错误
可能未处理的 Promise Rejection (id: 0): TypeError: undefined is not an object (evalating '_this.state.current_state')
我该如何解决?它是在 react native 中进行状态管理的正确方法吗?
解决方案
我认为问题不在于代码,而在于没有放置 e.preventDefault()
尝试以下操作:
const onSubmit = (e,data) => {
e.preventDefault()
console.log(state.current_state);
setState({current_state: 'login_process'});
console.log(state.current_state);
});
}
推荐阅读
- string - 从 dart 中的字符串末尾删除空格
- android - 添加“minifyEnabled true”和“proguard-android-optimize.txt”是否会混淆 sqlite 数据库并使其与以前的版本不兼容?
- python - 在 Heroku 上部署应用程序期间出现 TomlDecodeError
- kotlin - 如何使用 Kotlin 的 Apollo Android,但没有 Android?
- python - SQL多表条件检索语句
- javascript - react-beautiful-dnd:当存在多个列表时,在一行中拖动内容会从所有行中拖动相同的索引
- regex - Windows Batch 中的正则表达式以自动化 Docker 运行
- python - Python:在 Pandas 中,根据条件从数据框中的几列中提取数据,并添加到列上匹配的不同数据框中
- angular - 带有 Jest 的 Angular 8 - 'jasmine' 没有导出的成员 'SpyObj'
- ios - 如何使用 SwiftUI 在 NavigationView 中正确包含“添加项目”按钮?