useState на шаг отстает от переключателя onValueChange - PullRequest
0 голосов
/ 06 апреля 2020

, поэтому я рендеринг переключателя, который должен переключать значение

const [useBioAuth, setUseBioAuth] = useState<boolean>(false);

, это мой переключатель

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

, и это моя функция toggleSwitch

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]);

однако состояние всегда на один шаг позади переключателя. Журнал консоли показывает true, когда он должен быть ложным, и наоборот

Есть идеи, пожалуйста? спасибо

1 Ответ

0 голосов
/ 06 апреля 2020

Вы можете использовать функцию вместо значения в setState. Попробуйте это: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...