Обработка обратного нажатия на React Native в зависимости от состояния компонента - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь настроить событие обратной навигации в моем собственном приложении React. По сути, в теле компонента я визуализирую разные разделы в зависимости от переменной состояния currentSection . Я обнаружил, что значение currentSection внутри функции onBackPress не обновляется и, по-видимому, всегда имеет значение, когда оно было впервые вызвано (во время вызова useEffect).

    const [currentSection, setCurrentSection] = useState<ProviderDetailSections>(ProviderDetailSections.MAIN);

    useEffect(() => {
        BackHandler.addEventListener(
            "hardwareBackPress",
            onBackPress
        );

        return () => BackHandler.removeEventListener(
            "hardwareBackPress",
            onBackPress
        );
    }, []);

    function onBackPress(): boolean {
        console.log(`onBackPress currentSection: ${currentSection}`);
        if (currentSection === ProviderDetailSections.MAIN) {
            return false;
        }
        else {
            setCurrentSection(ProviderDetailSections.MAIN);
            return true;
        }
    }

console.log () внутри onBackPress всегда регистрирует один и тот же раздел (MAIN), независимо от того, какой раздел является текущим. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 30 мая 2020

Проверить ответ

const [currentSection, setCurrentSection] = useState<ProviderDetailSections>(ProviderDetailSections.MAIN);

useEffect(() => {
    BackHandler.addEventListener(
        "hardwareBackPress",
        onBackPress
    );

    return () => BackHandler.removeEventListener(
        "hardwareBackPress",
        onBackPress
    );
}, []);

function onBackPress(): boolean {
    console.log(`onBackPress currentSection: ${currentSection}`);
        setCurrentSection(ProviderDetailSections.MAIN);
        return true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...