https://reactnavigation.org/docs/themes/
앱 전역에서 theme(color)등을 사용할 수 있으면 매번 상대 경로를 통해 접근하지 않아도 되고, 재사용할 수 있어 편리하다.
react NavigationContainer는 react에서 최상위에 위치하여 하위 컴포넌트에 props를 자동으로 내려주고 있고, 이 중에는 theme을 내릴 수 있다. (Naviagation Container 속성 중theme
에 객체 할당하는 방법)
primary
,background
,card
,text
,border
,notification
등의 속성들이 있음.import * as React from 'react';
import { NavigationContainer, DefaultTheme } from '@react-navigation/native';
const MyTheme = {
...DefaultTheme,
colors: {
...DefaultTheme.colors,
primary: 'rgb(255, 45, 85)',
},
};
export default function App() {
return (
<NavigationContainer theme={MyTheme}>{/* content */}</NavigationContainer>
);
}
import * as React from 'react';
import { TouchableOpacity, Text } from 'react-native';
import { useTheme } from '@react-navigation/native';
// Black background and white text in light theme, inverted on dark theme
function MyButton() {
const { colors } = useTheme();
return (
<TouchableOpacity style={{ backgroundColor: colors.card }}>
<Text style={{ color: colors.text }}>Button!</Text>
</TouchableOpacity>
);
}