(ネストされた)StackNavigator内にカスタムヘッダーアイコンを実装するにはどうすればよいですか?

B--リアン

これはわかりにくい質問かもしれませんが、ドキュメントやその他のソースを読みましたが、写真のように、StackNavigator内のヘッダーに2つ以上の追加のクリック可能なアイコンを実装する方法がわかりませんでしたstackNavigatorでバックアイコンを表示したい場合は、メニューアイコンを上書きできます。

これは、(ルート)ホーム画面がどのように見えるかを示しています。ユーザーがコンテンツをクリックし始めたら、menu-itemをstackNavigatorの戻るボタンに置​​き換える必要があります(理想的にはどのプラットフォームでも)。達成したいことのモックアップ。

これまでに行ったこと:tabs実行時にオプションを選択することにより、新しいテンプレートから始めましたexpo initMainTabNavigator.jsファイルにいくつかの小さな変更を加えました

import React from 'react';
import { Platform } from 'react-native';
import { createStackNavigator, createBottomTabNavigator } from 'react-navigation';
import CustomHeader from '../components/CustomHeader';
import HomeScreen from '../screens/HomeScreen';    

const HomeStack = createStackNavigator( { Home: HomeScreen }, {
   // default config for screens in the stack, so `Home` will use this title 
  navigationOptions: { 
    title: 'Protype Prompter: Browse',
    header: props => <CustomHeader {...props} />,
    }}
);
// All other code stays like provided by expo init.
export default createBottomTabNavigator({
  HomeStack,
});

次に、HomeScreen.jsでヘッダーが上書きされないことを確認しました。

export default class HomeScreen extends React.Component {
  /* static navigationOptions = {
    header: null,
  }; */

CustomHeader.jsを手伝ってくださいこれまでの私の努力はすべて、ホーム画面に目に見える変化をもたらすことはありませんでした。

import React from "react";
import { Header } from "react-navigation";
import { View, Platform, Image, StyleSheet } from "react-native";
import { SimpleLineIcons } from '@expo/vector-icons'; 
const CustomHeader = props => {
  return (
    <View>
        <SimpleLineIcons name="menu" size={24} color={tintColor} />
         <Header headerLeft={<SimpleLineIcons name="menu" size={24} color='#6a1b9a' />} {...props} />
    </View>
  );
};
export default CustomHeader;

他の情報源のほかに、私はこれまでに次のWebサイトを調べました。

  1. ヘッダーヘッダーボタンに関するドキュメント
  2. 反応-navitation問題についてgithubのディスカッション
  3. ヘッダ変更のHOWTOとで別の反応ナビゲーションと顧客ヘッダー後者は良い出発点のようでした。
J.ヘスターズ

これは実際にはかなり簡単です。React Navigation V2またはV3を使用していることを考慮して、createStackNavigatorドキュメントを参照してください

あなたがそこに持っているheaderLeftheaderRight、両方のカスタムコンポーネントを取ることができます設定を。したがって、サンプルヘッダーを簡単にコーディングできます。

編集

だから私は例を素早くコーディングしました:

あなたのApp.js

import React, { Component } from "react";
import Navigator from "./navigation/navigation";

export default class App extends Component {
  render() {
    return <Navigator />;
  }
}

navigation.js

import { createStackNavigator } from "react-navigation";
import HomeScreen from "../screens/HomeScreen";

const RootStack = createStackNavigator({ HomeScreen });

export default RootStack;

これで、次のように画面ごとにヘッダーをデザインできます。

import React, { Component } from "react";
import { Platform, StyleSheet, Text, View } from "react-native";
import { SafeAreaView } from "react-navigation";
import { Icon } from "react-native-elements";

const styles = StyleSheet.create({
  container: {
    flex: 1
  },
  icon: {
    paddingLeft: 10
  },
  iconContainer: {
    flexDirection: "row",
    justifyContent: "space-evenly",
    width: 120
  }
});

export class HomeScreen extends Component {
  static navigationOptions = {
    title: "Title",
    headerLeft: (
      <Icon
        containerStyle={styles.icon}
        type="ionicon"
        name={Platform.OS === "ios" ? "ios-menu" : "md-menu"}
      />
    ),
    headerRight: (
      <View style={styles.iconContainer}>
        <Icon type="ionicon" name={Platform.OS === "ios" ? "ios-search" : "md-search"} />
        <Icon type="ionicon" name={Platform.OS === "ios" ? "ios-heart" : "md-heart"} />
        <Icon type="ionicon" name={Platform.OS === "ios" ? "ios-more" : "md-more"} />
      </View>
    )
  };

  render() {
    return (
      <SafeAreaView styles={styles.container}>
        <Text>Hi from the HomeScreen.</Text>
      </SafeAreaView>
    );
  }
}

export default HomeScreen;

はreact-native-elements<Icon />コンポーネントを使用しましこれらのアイコンにonPress小道具を与えることで、これらのアイコンをクリック可能にすることができます。

iOSでの結果のスクリーンショットは次のとおりです。

ここに画像の説明を入力してください

恥知らずなプラグイン: React Navigationについて詳しく知りたい場合は、本番環境に対応したナビゲーション設定を使用してアプリケーションを構築する方法を説明するチュートリアルがお勧めです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Vuetify:複数のダイアログ内タイムピッカーコンポーネントを作成するにはどうすればよいですか?

分類Dev

独自の「カスタムコンポーネント」リストをAngularに実装するにはどうすればよいですか?

分類Dev

ネストされた非静的クラスをインターフェイスに実装するにはどうすればよいですか?

分類Dev

Cヘッダーの「extern」句で指定された関数をC ++クラス内に実装するにはどうすればよいですか?

分類Dev

SignalRのTypescriptクライアントにカスタムヘッダーを追加するにはどうすればよいですか?

分類Dev

Hyperで使用するカスタム型ヘッダーを実装するにはどうすればよいですか?

分類Dev

反応スタイルのコンポーネントでカスタムアイコンを使用するにはどうすればよいですか?

分類Dev

動的に生成されたWebサービスにカスタムSOAPヘッダーを追加するにはどうすればよいですか?

分類Dev

Google Appsスクリプトから送信されたメールのDate:ヘッダーのタイムゾーンを実行中のユーザーのタイムゾーンに一致させるにはどうすればよいですか?

分類Dev

Google Appsスクリプトから送信されたメールのDate:ヘッダーのタイムゾーンを実行中のユーザーのタイムゾーンに一致させるにはどうすればよいですか?

分類Dev

React Nativeのヘッダーにカスタムタイトルとボタンを追加するにはどうすればよいですか?

分類Dev

フォームデータアイテムにカスタムヘッダーを設定するにはどうすればよいですか?

分類Dev

コンピュータをネットワーク上に置いたまま、「メディアデバイス」がネットワークに表示されないようにするにはどうすればよいですか?(Windows 10ホーム)

分類Dev

ヘッダーファイルを指定してインターフェイスを実装するにはどうすればよいですか?

分類Dev

カスタムHTTPヘッダーをエンドポイントに送信するにはどうすればよいですか?

分類Dev

Ngxs + WebSocket | 接続をインターセプトしてカスタムHTTPヘッダーを追加するにはどうすればよいですか?

分類Dev

カスタムc ++クラスのコピーコンストラクターを実装するにはどうすればよいですか

分類Dev

カルーセルコンポーネントをカスタマイズするために、AngularでPrimeNGスタイルクラスを実装するにはどうすればよいですか?

分類Dev

WordPressでカスタムヘッダーのブートストラップウィジェットコードを実装するにはどうすればよいですか?

分類Dev

`HyperlinkButton`コントロールのカスタムヘッダーを設定するにはどうすればよいですか?

分類Dev

単純なカウントダウンタイマーコンストラクターをフラッターでアプリに実装するにはどうすればよいですか?

分類Dev

状態を変更したり、クラスベースのコンポーネントにリファクタリングしたりせずに、このヘルパーメソッドを実装するにはどうすればよいですか?

分類Dev

Salesforceでカスタマイズされたログインコンポーネントを作成するにはどうすればよいですか?

分類Dev

カスタムヘッダーをHttpClient()に追加するにはどうすればよいですか?

分類Dev

カスタムコンポーネント内でVue.jsプラグインを使用するにはどうすればよいですか?

分類Dev

フラグメントのカスタムダイアログに入力された情報を取得するにはどうすればよいですか?

分類Dev

ロガープロバイダー:カスタムフォーマッターを実装するにはどうすればよいですか?

分類Dev

カスタムエラードキュメントのHTTPヘッダーにアクセスするにはどうすればよいですか?

分類Dev

Laravel:カスタム実装に対してUrlGenerator(コアバインディング)を変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    Vuetify:複数のダイアログ内タイムピッカーコンポーネントを作成するにはどうすればよいですか?

  2. 2

    独自の「カスタムコンポーネント」リストをAngularに実装するにはどうすればよいですか?

  3. 3

    ネストされた非静的クラスをインターフェイスに実装するにはどうすればよいですか?

  4. 4

    Cヘッダーの「extern」句で指定された関数をC ++クラス内に実装するにはどうすればよいですか?

  5. 5

    SignalRのTypescriptクライアントにカスタムヘッダーを追加するにはどうすればよいですか?

  6. 6

    Hyperで使用するカスタム型ヘッダーを実装するにはどうすればよいですか?

  7. 7

    反応スタイルのコンポーネントでカスタムアイコンを使用するにはどうすればよいですか?

  8. 8

    動的に生成されたWebサービスにカスタムSOAPヘッダーを追加するにはどうすればよいですか?

  9. 9

    Google Appsスクリプトから送信されたメールのDate:ヘッダーのタイムゾーンを実行中のユーザーのタイムゾーンに一致させるにはどうすればよいですか?

  10. 10

    Google Appsスクリプトから送信されたメールのDate:ヘッダーのタイムゾーンを実行中のユーザーのタイムゾーンに一致させるにはどうすればよいですか?

  11. 11

    React Nativeのヘッダーにカスタムタイトルとボタンを追加するにはどうすればよいですか?

  12. 12

    フォームデータアイテムにカスタムヘッダーを設定するにはどうすればよいですか?

  13. 13

    コンピュータをネットワーク上に置いたまま、「メディアデバイス」がネットワークに表示されないようにするにはどうすればよいですか?(Windows 10ホーム)

  14. 14

    ヘッダーファイルを指定してインターフェイスを実装するにはどうすればよいですか?

  15. 15

    カスタムHTTPヘッダーをエンドポイントに送信するにはどうすればよいですか?

  16. 16

    Ngxs + WebSocket | 接続をインターセプトしてカスタムHTTPヘッダーを追加するにはどうすればよいですか?

  17. 17

    カスタムc ++クラスのコピーコンストラクターを実装するにはどうすればよいですか

  18. 18

    カルーセルコンポーネントをカスタマイズするために、AngularでPrimeNGスタイルクラスを実装するにはどうすればよいですか?

  19. 19

    WordPressでカスタムヘッダーのブートストラップウィジェットコードを実装するにはどうすればよいですか?

  20. 20

    `HyperlinkButton`コントロールのカスタムヘッダーを設定するにはどうすればよいですか?

  21. 21

    単純なカウントダウンタイマーコンストラクターをフラッターでアプリに実装するにはどうすればよいですか?

  22. 22

    状態を変更したり、クラスベースのコンポーネントにリファクタリングしたりせずに、このヘルパーメソッドを実装するにはどうすればよいですか?

  23. 23

    Salesforceでカスタマイズされたログインコンポーネントを作成するにはどうすればよいですか?

  24. 24

    カスタムヘッダーをHttpClient()に追加するにはどうすればよいですか?

  25. 25

    カスタムコンポーネント内でVue.jsプラグインを使用するにはどうすればよいですか?

  26. 26

    フラグメントのカスタムダイアログに入力された情報を取得するにはどうすればよいですか?

  27. 27

    ロガープロバイダー:カスタムフォーマッターを実装するにはどうすればよいですか?

  28. 28

    カスタムエラードキュメントのHTTPヘッダーにアクセスするにはどうすればよいですか?

  29. 29

    Laravel:カスタム実装に対してUrlGenerator(コアバインディング)を変更するにはどうすればよいですか?

ホットタグ

アーカイブ