LoginSignup
0
0

More than 3 years have passed since last update.

Tab Navigationのアイコン表示をすっきり書く方法

Posted at

はじめに

スマホアプリを作る際によく出てくるのがアイコンを使ったナビゲーション。
今回はReactNavigationの公式ドキュメントに載っているコードをすっきり見やすく書いてみたので紹介します。

<使用するもの>
・React Native
・NavigationContainer
・createBottomTabNavigator
・@expo/vector-icons

公式

こちらの公式ドキュメントではこんな感じで書いてあります。(focusedは今回除きました)

<Tab.Navigator
        screenOptions={({ route }) => ({
          tabBarIcon: ({ color, size }) => {
            let iconName;

            if (route.name === 'Home') {
              iconName = 'ios-information-circle';
            } else if (route.name === 'Settings') {
              iconName = 'ios-list';
            }

            // You can return any component that you like here!
            return <Ionicons name={iconName} size={size} color={color} />;
          },
        })}
        tabBarOptions={{
          activeTintColor: 'tomato',
          inactiveTintColor: 'gray',
        }}
      >
        <Tab.Screen name="Home" component={HomeScreen} />
        <Tab.Screen name="Settings" component={SettingsScreen} />
      </Tab.Navigator>

screenの名前をもとにif文で表示させるアイコンを分岐させています。

すっきり書いてみた

const TAB_ICON = {
    Home: 'ios-information-circle',
    Settings: 'ios-list',
};
const createScreenOptions = ({ route }) => {
    const iconName = TAB_ICON[route.name];
    return {
        tabBarIcon: ({ size, color }) => (
            <Ionicons name={iconName} size={size} color={color} />
        )
    };
};

createScreenOptionsをscreenOptions={}に入れてあげれば公式ドキュメントと同じ動きをします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0