Как проверить, изменяется ли логическое значение по умолчанию состояния false на true с помощью React Hook useEffect?

В настоящее время я полностью застрял в React Hook .

Когда состояние меняется, trueоно должно показывать console.log('currentBoolean'), но этого не происходит.

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

const MemoryPageTwo = ({ disabledAllCards }) => {
    const boolean = useRef(null);
    const [ isCurrentBoolean , setLevel ] = useState(false);

    useEffect(() => {
        console.log(isCurrentBoolean);
        if(isCurrentBoolean) {
            console.log('currentBoolean');
        }

    }, [isCurrentBoolean]);
    
    useEffect(() => {
        const storedBoolean = disabledAllCards ;
      
        boolean.current = storedBoolean;
        return () => storedBoolean
    }, []);

    //
    useEffect(() => {
        setLevel(boolean.current !== disabledAllCards);
    },[boolean.current, disabledAllCards]);
}

const mapStateToProps = state => {
    console.log(state.app.disableCards); // default is false, but this will be true if the memorycard matches 
    return { 
        disabledAllCards: state.app.disableCards || [],
    }
}

export default connect(mapStateToProps, null)(MemoryPageTwo);
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
const usePrevious = value => {
  const ref = useRef()
  useEffect(() => {
    ref.current = value
  }, [value])
  return ref.current
}


const [isOpen, setOpen] = useState(false)
const previous = usePrevious(isOpen)


Не знаю правильно ли понял я вас, но возможно это подойдёт
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы