首页 > 解决方案 > 状态未在指定函数内更新

问题描述

所以我试图像这样改变我的状态

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 中进行状态管理的正确方法吗?

标签: 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);
    });
  }

推荐阅读