Я хочу реализовать темный режим и черный режим в моем приложении, и способ, которым я имею это, состоит в том, что пользователь переключает на темный / черный режим из одного класса, в котором я хочу, чтобы состояние было обновлено для всех классов, переключательКласс выглядит следующим образом:
Класс AppearanceToggle
state = {
BlackModeValue: null,
DarkModeValue: null
};
componentDidMount = () => {
AsyncStorage.getItem('DarkModeValue').then(value => this.setState({ DarkModeValue: JSON.parse(value) }));
AsyncStorage.getItem('BlackModeValue').then(value => this.setState({ BlackModeValue: JSON.parse(value) }));
};
//AsyncStorage.setItem .........
render() {
return (
<ScrollView style={[ styles.View , this.state.DarkModeValue ? darkmode.ASView : null || this.state.BlackModeValue ? blackmode.ASView : null ]}>
<SettingsList borderColor='#c8c7cc' defaultItemSize={50}>
<SettingsList.Item
hasSwitch={true}
switchState={this.state.DarkModeValue}
switchOnValueChange={//Goes to asyncStorage.setItem method}
title='Dark Mode'
/>
<SettingsList.Item
hasSwitch={true}
switchState={this.state.BlackModeValue}
switchOnValueChange={//Goes to asyncStorage.setItem method}
title='Black Mode'
/>
</SettingsList>
</ScrollView>
);
}
}
И затем в классе (который является SettingsScreen.js, это экран, который перемещается к AppearanceToggle), который я хочу .getItem иизмените состояние следующим образом:
state = {
switchValue: false,
rated: false,
DarkModeValue:null,
BlackModeValue:null,
};
componentDidMount = () => {
AsyncStorage.getItem('DarkModeValue').then(value => this.setState({ DarkModeValue: JSON.parse(value) }));
AsyncStorage.getItem('BlackModeValue').then(value => this.setState({ BlackModeValue: JSON.parse(value) }));
};
render() {
return (
<ScrollView style={[ styles.View , this.state.DarkModeValue ? styles.DMView : null || this.state.BlackModeValue ? styles.BMView : null ]}>
..........
</ScrollView>
Проблема, с которой я столкнулся, заключается в том, что когда я меняю переключатель, он мгновенно влияет на класс AppearanceToggleScreen, но не на экран SettingsScEN ЕСЛИ Я не обновляю приложение.Есть ли способ сделать это, чтобы все они были затронуты мгновенно?