2017-11-11 151 views
1

我無法正確使用NavigationActions.init()或文檔中提到的狀態生成狀態。 這是怎麼我的導航儀定義:將導航路徑狀態設爲有密鑰和索引

const HomeNav = TabNavigator({ 
feed:{screen:Feed}, 
restaurantScreen:{screen:Restaurant}, 
},{ 
tabBarComponent:NavigationComponent, 
tabBarPosition:'bottom', 
tabBarOptions:{ 
    bottomNavigationOptions:{ 
     labelColor:'white', 
     rippleColor:'white', 
     tabs:{ 
      feed:{ 
       barBackgroundColor:'#37474F', 
      }, 
      restaurantScreen:{ 
       barBackgroundColor:'#00796B', 
      } 
     } 
    } 
} 
}); 
export const Navigator=StackNavigator(
{ 
    HomeScreen:{screen:Home}, 
    VerifyScreen:{screen:Verify}, 
    newUserScreen1:{screen:newUser1}, 
    newUserScreen2:{screen:newUser2}, 
    loginScreen:{screen:login}, 
    feedScreen:{screen:HomeNav}, 
}, 
{ 
    headerMode:'none', 
}, 
); 

這是我怎麼設置我的初始狀態:

const initialState=Navigator.router.getStateForAction(
NavigationActions.init() 
); 

function navigate(screenName,state){ 
return Navigator.router.getStateForAction(NavigationActions.navigate({routeName:screenName},state)); 
} 

以下錯誤顯示出來: Expect nav state to have routes and index,{routeName:'feedScreen',key:...}當導航到飼料標籤導航儀。

回答

0

在您的第二代碼片段應該是這樣的:

const initialState=Navigator.router.getStateForAction(
NavigationActions.init() 
); 

function navigate(screenName,state){ 
return Navigator.router.getStateForAction(NavigationActions.navigate({routeName:screenName}),state); 
} 
  • getStateForAction得到第二張「狀態」參數,你不是直接傳遞到NavigationActions.navigate

  • NavigationActions.init()需要像{routeName:'screen1'}這樣的任何對象作爲參數來初始化狀態。所以它應該是這樣的:NavigationActions.init({routeName:'screen1'})