Реагирование навигации: установить цвет заголовка перед рендерингом - PullRequest
2 голосов
/ 29 сентября 2019

Я создаю приложение, в котором пользователь может изменить тему, я использую заголовок реагировать на навигацию и знаю, что могу обновить navigationOptions, вызвав setParams(), но вызвать его на useEffect() слишком поздно, оноотображает цвет заголовка по умолчанию перед отображением правильного цвета.

Кстати, я использую компоненты функционального состояния.

useEffect(() => {
    navigation.setParams({
      backgroundColor: (theme === THEME_STANDARD) ? 'white' : Colors.appNight
    });
  }, [theme]);

Выше приведен код, который я сейчас использую, он автоматически обновляет цвет заголовка, когда я нажимаю кнопку для изменения темы. , но когда я перехожу на этот экран, он показывает цвет по умолчанию, прежде чем показывать правильный цвет темы. Ребята, у вас есть идеи, как этого добиться? Спасибо за любую помощь!

1 Ответ

0 голосов
/ 30 сентября 2019

useLayoutEffect, вероятно, то, что вы ищете, он запускает код, прежде чем браузер выводит на экран.

useLayoutEffect(() => {
  navigation.setParams({
    backgroundColor: theme === THEME_STANDARD ? 'white' : Colors.appNight
  });
}, [theme]); // or empty dependency array if you only want it to run when the component mounts
...