[解決済み] React-NativeのNavigatorコンポーネントを使ったカスタムナビゲーション
質問
の可能性を探っています。
リアクトネイティブ
の助けを借りて、ビュー間のカスタムナビゲーションを行うデモアプリを開発中です。
Navigator
コンポーネント
.
メインアプリのクラスは、ナビゲータとその内部をレンダリングします。
renderScene
渡されたコンポーネントを返します。
class App extends React.Component {
render() {
return (
<Navigator
initialRoute={{name: 'WelcomeView', component: WelcomeView}}
configureScene={() => {
return Navigator.SceneConfigs.FloatFromRight;
}}
renderScene={(route, navigator) => {
// count the number of func calls
console.log(route, navigator);
if (route.component) {
return React.createElement(route.component, { navigator });
}
}}
/>
);
}
}
今のところ、アプリには2つのビューが含まれています。
class FeedView extends React.Component {
render() {
return (
<View style={styles.container}>
<Text>
Feed View!
</Text>
</View>
);
}
}
class WelcomeView extends React.Component {
onPressFeed() {
this.props.navigator.push({
name: 'FeedView',
component: FeedView
});
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome View!
</Text>
<Text onPress={this.onPressFeed.bind(this)}>
Go to feed!
</Text>
</View>
);
}
}
私が解明したいのは
-
ログを見ると、"フィードに移動 "を押したときに
renderScene
が何度も呼び出されますが、ビューは一度だけ正しくレンダリングされます。これは、アニメーションの仕組みなのでしょうか?index.ios.js:57 Object {name: 'WelcomeView', component: function} index.ios.js:57 Object {name: 'FeedView', component: function} // renders Feed View
-
一般的に、私のアプローチはReactの方法に準拠しているか、あるいはもっとうまくできるか?
私が実現したいのは、次のようなものです。
NavigatorIOS
しかし、ナビゲーションバーはありません(ただし、一部のビューには独自のカスタムナビゲーションバーがあります)。
解決方法は?
あなたのアプローチはうまくいくはずです。Fbの大規模なアプリでは、私たちは
require()
をレンダリングするまで、シーン コンポーネントのために使用することで、起動時間を少し短縮することができます。
は
renderScene
関数は、シーンが最初にナビゲータにプッシュされたときに呼び出される必要があります。また、Navigatorが再レンダリングされる際にも、アクティブなシーンに対してこの関数が呼び出されます。もし
renderScene
の後に何度も呼び出されます。
push
であれば、それはおそらくバグでしょう。
ナビゲーターはまだ未完成ですが、もし何か問題を見つけたら、githubにファイルして、私にタグ付けしてください! (@ericvicenti)
関連
-
親子コンポーネント通信を解決する3つのVueスロット
-
Vueの「データを聴く」原則を解説
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み] Reactコンポーネント外でのクリックを検出する
-
[解決済み] React / React Nativeでコンストラクタを使用する場合とgetInitialStateを使用する場合の違いとは何ですか?
-
[解決済み] react-nativeでキーボードを隠す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
vueディレクティブv-bindの使用と注意点
-
Vueの「データを聴く」原則を解説
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み] テスト
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ