UI 라이브러리 Tamagui를 설치합니다.
npm install @tamagui/core
npm install tamagui
최상위 루트에 있는 _layout.tsx를 다음과 같이 수정합니다.
import { TamaguiProvider } from '@tamagui/core';
import { useFonts } from 'expo-font';
import { Stack } from 'expo-router';
import { StatusBar } from 'expo-status-bar';
import 'react-native-reanimated';
export default function RootLayout() {
const [loaded] = useFonts({
Inter: require('@tamagui/font-inter/otf/Inter-Medium.otf'),
InterBold: require('@tamagui/font-inter/otf/Inter-Bold.otf'),
});
if (!loaded) {
// Async font loading only occurs in development.
return null;
}
export default () => {
return (
<TamaguiProvider config={config}>
{/* your app here */}
</TamaguiProvider>
)
}
빠른 설정을 위해 @tamagui/config를 설치후 적용합니다.
npm install @tamagui/config
import { TamaguiProvider, createTamagui } from '@tamagui/core'
import { defaultConfig } from '@tamagui/config/v4'
export default () => {
return (
<TamaguiProvider config={config}>
{/* your app here */}
</TamaguiProvider>
)
}
최상위 디렉토리에 tamamgui.config.ts를 생성하고 아래 코드를 입력합니다.
import { defaultConfig } from '@tamagui/config/v4'
import { createTamagui } from '@tamagui/core'
export const config = createTamagui(defaultConfig)
type CustomConfig = typeof config
// ensure types work
declare module 'tamagui' {
interface TamaguiCustomConfig extends CustomConfig {}
}
import { TamaguiProvider } from '@tamagui/core';
import { useFonts } from 'expo-font';
import { Stack } from 'expo-router';
import { StatusBar } from 'expo-status-bar';
import 'react-native-reanimated';
import config from '../tamagui.config';
export default function RootLayout() {
const [loaded] = useFonts({
Inter: require('@tamagui/font-inter/otf/Inter-Medium.otf'),
InterBold: require('@tamagui/font-inter/otf/Inter-Bold.otf'),
});
if (!loaded) {
// Async font loading only occurs in development.
return null;
}
return (
<SafeAreaProvider>
<TamaguiProvider config={config} defaultTheme={'light'}>
<StatusBar style="auto" />
<Stack>
<Stack.Screen name="(main)/(tabs)" options={{ headerShown: true }} />
<Stack.Screen name="+not-found" />
</Stack>
</TamaguiProvider>
</SafeAreaProvider>
);
}