指定函数内状态未更新
2020-11-12
61
因此,我尝试像这样更改我的状态
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);
});
但我收到此错误
Possible Unhandled Promise Rejection (id: 0): TypeError: undefined is not an object (evaluating '_this.state.current_state')
我该如何修复它?这是在 React Native 中进行状态管理的正确方法吗?
2个回答
您不能使用Usestate Hook进行异步操作。如果要触发更改,请尝试这样的事情:
167416404
您要收到的错误是您不能在功能组件中使用
this
。
您可以使用
使用
挂钩并进行类似的操作:
845051945
Mateusz Rostkowski
2020-11-12
我认为问题不在于代码,而在于没有放置 e.preventDefault()
尝试以下操作:
const onSubmit = (e,data) => {
e.preventDefault()
console.log(state.current_state);
setState({current_state: 'login_process'});
console.log(state.current_state);
});
}
Asaf Strilitz
2020-11-12