【问题标题】:useState is one step behind on switch onValueChangeuseState 在开关 onValueChange 上落后一步
【发布时间】:2020-04-06 15:12:54
【问题描述】:

所以我正在渲染一个必须切换

值的开关
const [useBioAuth, setUseBioAuth] = useState<boolean>(false);

这是我的开关

 <Switch
     onValueChange={toggleSwitch}
     trackColor={{ true: colors.secondary }}
     thumbColor={colors.input.bg.normal}
     style={style.marginT10}
     value={useBioAuth}
  />

这是我的切换开关功能

const toggleSwitch = useCallback(() => {
    setUseBioAuth(!useBioAuth);
    console.log('toggle '+ useBioAuth)
    _storeData();
  }, [_storeData, useBioAuth]);

  const _storeData = useCallback(async () => {
    try {
      await AsyncStorage.setItem('useBioAuth', JSON.stringify(useBioAuth));
      if (!useBioAuth) {
        await AsyncStorage.removeItem('useBioAuth');
      }
    } catch (error) {
      //TODO
    }
  }, [useBioAuth]);

但是状态总是比切换慢一步,控制台日志在应该为假时显示为真,反之亦然

有什么想法吗? 谢谢

【问题讨论】:

    标签: react-native react-hooks use-state


    【解决方案1】:

    您可以使用函数而不是 setState 中的值。所以试试这个:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多