2

私は図のようにTabNavigatorを持っています。 Header ImageTabNavigatorのタブのブロック/無効化 - 反応ナビゲーション

私はこれらのタブを以下のように作成するためにTabNavigatorを使用しています。

const Tab_Navigator = TabNavigator({ 
    First:{ 
     screen: First, 
    }, 
    Second:{ 
     screen: Second, 
    }, 
    Third:{ 
     screen: Third, 
    }, 

今すぐ"第2"と "第3"タブをブロック/無効にしたいとします。それは見えるはずですが、1つはそれらにナビゲートできません。

hereのようにこれらのタブをブロックしようとしましたが、何か不足していると思います。私の試行:

Tab_Navigator.router.getStateForAction = (action, state) => { 
if(action.type === NavigationActions.navigate({ routeName: "Second"}) || 
    action.type === NavigationActions.navigate({ routeName: "Third"})) 
{ 
    return null; 
} 

return Byte.router.getStateForAction(action, state); 

}

答えて

4

この場合、action.type = "Navigation/NAVIGATE"、action.routeNameはタブの名前です。これは、ReactNavigation Routersの例とはちょっと違います。以下は動作するはず:

const defaultGetStateForAction = Tab_Navigator.router.getStateForAction; 

Tab_Navigator.router.getStateForAction = (action, state) => { 
    if ((action.type === NavigationActions.NAVIGATE) && 
    (action.routeName === "Second" || action.routeName === "Third") { 
    return null; 
    } 

    return defaultGetStateForAction(action, state); 
}; 

EDIT:ここではクロムデバッガのイメージコードの非常に類似した部分(タブ名が異なる)でブレークポイントで停止し、それは、「アクションの値を示します"オブジェクトはこの関数に渡されます。 react native router disable tab

+0

ありがとうございます!申し訳ありませんが、私はそれをupvoteするために十分な評判を持っていません。将来はそれをするだろう。 – Smit

+0

もちろん。問題ない。それがうれしかった:) –

関連する問題