Я новичок в реагировать на родной язык, поэтому любая помощь приветствуется!
Я создал менеджер тем, который поддерживает список обработчиков для обновления 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,
}
Цвет фона остается исходным. Вопрос в том, почему компонент имеет оригинальный цвет? Я предполагаю, что журнал консоли отражает поток программы.