开发者问题收集

指定函数内状态未更新

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