Пытаетесь поддерживать темный режим без распространения темы === 'dark'? «черный»: «белый» везде - PullRequest
0 голосов
/ 24 января 2020

Я новичок в реагировать на родной язык, поэтому любая помощь приветствуется!

Я создал менеджер тем, который поддерживает список обработчиков для обновления sh всех различных стилей в приложении следующим образом:

var handlers = [];
export const registerStyle = (fnHandler) => {
  if (!handlers.find(fnHandler)) {
    console.log('refreshHandler:', fnHandler);
    handlers.push(fnHandler);
  }
}

export const refreshStyles = () => {
  handlers.forEach(fn => fn());
}

и имеет функцию, которая изменяет цвет фона, используемый в приложении, и уведомляет различные таблицы стилей в приложении для пересчета их стиля после изменения цвета:

const checkDarkMode = colorScheme => {
  if (colorScheme === 'dark') {
    console.log("DARK-MODE");
    AppColors.background = '#aaaaaa';
    refreshStyles();
  }
}

  Appearance.addChangeListener(({ colorScheme }) => {
    console.log("COLOR-SCHEME:", colorScheme);
    checkDarkMode(colorScheme);
  });

const appStyles = () => {
.
.
.
 tableText: {
      paddingHorizontal: 8,
      paddingVertical: 4,
      backgroundColor: AppColors.background,
      color: AppColors.primary,
      fontSize: 20
    }
  });
}

var AppStyles = appStyles()
registerStyle(() => { 
  AppStyles = appStyles();
  console.log('TABLE-TEXT:', AppStyles.tableText);
});

export default AppStyles;

Вот что я получаю в журнале консоли:

AppStyles background color #e0d8ee
refreshHandler: [Function anonymous]
RootScreen-appStyles
RootScreen-appStyles
refreshHandler: [Function anonymous]
Running application on JDoe's iPhone.
AppStateListener initial COLOR-SCHEME: no-preference
DARK-MODE
AppStyles background color #aaaaaa
TABLE-TEXT: Object {
  "backgroundColor": "#aaaaaa",
  "color": "#4f73b0",
  "fontSize": 20,
  "paddingHorizontal": 8,
  "paddingVertical": 4,
}
RootScreen-appStyles

Я добавил сообщение журнала в компонент, используя стиль TABLE-TEXT, и в журнале консоли после изменения стиля, который я вижу:

Root TABLE-TEXT: Object {
  "backgroundColor": "#e0d8ee",
  "color": "#4f73b0",
  "fontSize": 20,
  "paddingHorizontal": 8,
  "paddingVertical": 4,
}

Цвет фона остается исходным. Вопрос в том, почему компонент имеет оригинальный цвет? Я предполагаю, что журнал консоли отражает поток программы.

...