LoginSignup
3
0

More than 3 years have passed since last update.

【React Native】Header Navigationでヘッダータイトル(Header Title)にコンポーネントを渡す方法

Last updated at Posted at 2020-08-31

こんにちは!
最近はパソコンを持たない大学生も多いみたいですね。
パソコンを持たない=スマホで完結
スマホアプリの需要の変化についても、気になるこの頃です。

さて、今回は「React NativeHeader Navigationでヘッダータイトル(Header Title)にコンポーネントを渡す方法」について、お伝えしていきたいと思います。

header_title(コンポーネント).gif

(復習)React Navigationtitleに任意の値を与える方法

export default function SplashScreen() {
  function HomeScreen({navigation}) {
    return (
      <View style={styles.container}>
        <Text style={styles.text}>Home Screen!!</Text>
      </View>
    );
  }

  return (
    <Stack.Navigator>
      <Stack.Screen
        name="Home"
        component={HomeScreen}
        options={{headerTitle: 'title'}}
      />
    </Stack.Navigator>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems:'center',
    justifyContent:'center',
  },
  text: {
    fontSize: 50,
  },
});

※importなどの記述は省略しています。

結果は・・・

ヘッダータイトルに任意の値(title)を設定することができました。

React Navigationtitleにコンポーネントを渡す方法

ここから本題です。
ヘッダータイトルにコンポーネントを設定してみたいと思います。

例として、ヘッダータイトルをタップすると、アラートが表示されるようにしてみます。

export default function SplashScreen() {
  function HomeScreen({navigation}) {
    return (
      <View style={styles.container}>
        <Text style={styles.text}>Home Screen!!</Text>
      </View>
    );
  }

  // ヘッダータイトルコンポーネント
  const title = () => {
    return (
      <TouchableOpacity onPress={() => alert('headerTitle Tapped')}>
        <Text>Title Component</Text>
      </TouchableOpacity>
    );
  };
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="Home"
        component={HomeScreen}
        // ここで、headerTitleにtitleコンポーネントを渡してあげます。
        options={{headerTitle: title}}
      />
    </Stack.Navigator>
  );
}

結果は・・・
header_title(コンポーネント).gif

これで、タイトルに独自のコンポーネントを設定することができました!

もちろんヘッダータイトルに画像を設定したりもできます。

参考資料

3
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
3
0