Различные подходы возможны. Один из них - использовать React context. Как правило, его следует использовать с осторожностью, но тематика - один из официальных примеров, где он подходит.
Тематизация является хорошим примером того, когда вы могли бы хотеть все поддерево, чтобы иметь доступ к некоторой части информации
Так пример может выглядеть
class App extends Component {
getChildContext() {
return {theme: { primaryColor: "purple" }};
}
...
}
App.childContextTypes = {
theme: React.PropTypes.object
};
где вы установите контекст для остальной части вашего приложения, а затем вы используете его в своих компонентах.
class Button extends Component {
render() {
return <TouchableHighlight underlayColor={this.context.theme.primaryColor}>...
}
}
Button.contextTypes = {
theme: React.PropTypes.object
};
Если вы хотите переключать тему, вы можете установить контекст на основе вашего состояния/реквизита, который может быть основан на выборе пользователя.
В настоящее время мы имеем дело с одинаковыми вопросами, и поэтому у нас есть начальная библиотека прототипов, которая называется react-native-themeable.
Идея заключается в использовании контекста для хранения темы и (повторного) реализации компонентов RN, чтобы они могли заменять исходные компоненты, но поддерживали их.
Пример темы переключения вы можете найти в https://github.com/instea/react-native-themeable/blob/master/examples/src/SwitchTheme.js
Тема выбрана только один раз в вашем коде - на старте приложения. Используя этот подход, приложение не может быть повторно передано новой темой «на лету». – oldwizard