既存のReact NativeプロジェクトにNative Baseを追加する方法を解説します。
React Navigationと共存するケースについても合わせて解説しています。
バージョン
- react-native 0.71.2
- native-base 3.4.25
NativeBaseを追加
パッケージを追加
Native Baseと他依存関係のあるパッケージを追加します。
$ npm install native-base react-native-svg@12.1.1 react-native-safe-area-context@3.3.2
// yarn
$ yarn add native-base react-native-svg@12.1.1 react-native-safe-area-context@3.3.2
pod install
iOSで動かす場合はpod install
を実行します。
モグモグさん
pod installのコマンドはみなさんの環境に合わせてください!
$ cd ios/ && pod install
NativeBaseProviderでラップ
NativeBaseProvider
でラップします。
これでNative BaseのComponentが使えるようになります。
import React from "react";
import { NativeBaseProvider, Box } from "native-base";
export default function App() {
return (
<NativeBaseProvider>
<Box>Hello world</Box>
</NativeBaseProvider>
);
}
React Navigationと共存
ここまでで既存のプロジェクトにNative Baseを追加できました。
よくあるケースとして、React Navigationと一緒に使うことがあると思いますのでそのケースを解説します。
といってもシンプルで、NavigationContainer
の中でNativeBaseProvider
でラップしてあげればOKです!
import {NavigationContainer} from '@react-navigation/native';
import {NativeBaseProvider} from 'native-base';
import React from 'react';
import {StatusBar, useColorScheme} from 'react-native';
import {Colors} from 'react-native/Libraries/NewAppScreen';
function App(): JSX.Element {
const isDarkMode = useColorScheme() === 'dark';
const backgroundStyle = {
backgroundColor: isDarkMode ? Colors.darker : Colors.lighter,
};
return (
<NavigationContainer>
<NativeBaseProvider>
<StatusBar
backgroundColor={backgroundStyle.backgroundColor}
barStyle={isDarkMode ? 'light-content' : 'dark-content'}
/>
<Stack.Navigator>
<Stack.Screen
component={HomePage}
name="HomePage"
options={{title: 'Home'}}
/>
<Stack.Screen
...
/>
</Stack.Navigator>
</NativeBaseProvider>
</NavigationContainer>
);
}
export default App;
まとめ
既存のReact NativeプロジェクトにNative Baseを追加する方法を解説しました。
これからNative Baseを使い始めたい方の参考になれば幸いです。