为什么我在 React Native 中的这个布尔值有两个不同的值?

IT技术 javascript reactjs react-native frontend state
2021-05-09 07:01:14

在 React Native App 中,单击切换按钮后,函数_toggleServerSwitch被触发。然后我将状态serverSwitchValue更改为与x相同的值

预期serverSwitchValuexconsole.log()时应该具有相同的值

实际:当 console.log() 时,两个变量有不同的值。

该程序似乎可以运行,但是在触发console.log()时,值不相同。为什么?

const [serverSwitchValue, setServerSwitchValue] = useState(false);

  const _toggleServerSwitch = x => {
    setServerSwitchValue(x);
    console.log('x is: ' + x);
    console.log('serverSwitchValue is: ' + serverSwitchValue);
  };
1个回答

setServerSwitchValue() 是一个异步函数,因此它并不意味着您将立即更新值。你可以使用useEffect如下:

useEffect(() => {
 console.log(serverSwitchValue);
}, [serverSwitchValue]); // Only re-run the effect if open changes

希望能帮助到你。