2017-03-14 14 views
0

複数のTabBar.Itemコンポーネントを持つTabBarがあります。各TabBar.Itemコンポーネントには独自のNavigatorIOSがあります。ここで React Native NavigatorIOSはコンポーネントを再レンダリングしません。

は、ユーザーが Filterボタンをクリックすると、私は単に NavigatorIOS

<NavigatorIOS 
    ref="nav" 
    initialRoute={{ ...this.props }} 
    style={{ 
    flex: 1 
    }} 
/> 

をレンダリング、私のNavigationBar.js以内に私TabBar.js

<TabBarIOS> 
    <TabBarIOS.Item 
    selected={this.state.selectedTab === "profile"} 
    systemIcon={"most-viewed"} 
    onPress={() => this.setTab("profile")} 
    > 
    <NavigationBar title="Profile" component={Profile} passProps={{ showFilter: this.state.showFilter }} /> 
    </TabBarIOS.Item> 
</TabBarIOS> 

のために私のコードの例です、this.state.showFilterTabBarに更新されます。次に、それを

があり、正しく、NavigationBarの内部render()機能は、この時点で、しかし

を実行している、私のコンポーネントはinitialRoute(プロフィール)に記載されているコンポーネントを再表示されませんNavigatonBarに受け継がれていますこれを達成する方法は?フィルタをクリックすると、Profileの中に任意の変数を設定して、フィルタを非表示にして表示する必要があります。Modal

+0

私はIOSについてよく分かりませんが、この質問には解決策があるようです: http://stackoverflow.com/questions/3249240/how-to-pop-a-controller-off-the-navigation- stack-without-using-the-navigation-ba –

+0

コメントをいただきありがとうございます。これはSwift/Objective-C(あなたが提供したリンクにあるもの)に近いReact Native(JavaScript) – Dan

答えて

0

もっと洗練された解決法があるかどうかはわかりませんが、

IはNavigationBarの内部次のコードを追加:

shouldComponentUpdate(nextProps, nextState) { 
    this.refs.nav.replace({...nextProps}) 
    return true; 
    } 

これはinitialRouteコンポーネントのリロードを強制します。

関連する問題