質問: react-nativeのnavigatorコンポーネントを使用したカスタムナビゲーション navigator component を使用して、ビュー間のカスタムナビゲーションを備えたデモアプリを開発しながら、 react native の可能性を探っています。メインアプリクラスはナビゲータをレンダリングし、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> ); } } 私が理解したいのは: ログを見ると、「go to feed」を押すと、rendersceneが数回呼び出されますが、ビューは1回正しくレンダリングされます。アニメーションはどのように機能しますか? 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関数は、シーンが最初にナビゲータにプッシュされたときに呼び出す必要があります。また、ナビゲーターが再レンダリングされるときにアクティブなシーンに対して呼び出されます。 rendersceneの後にpushが複数回呼び出される場合は、おそらくバグです。ナビゲーターはまだ開発中ですが、問題が見つかった場合はgithubにファイルして、タグを付けてください! (@ericvicenti)