2017-03-09 48 views
1

我成立了一個TabNavigator像這樣:React-navigation:如何禁用一次初始化時在TabNavigator上滑動?

class RNNavigation extends Component { 

    constructor(props) { 
    super(props); 
    } 

    render() { 
    const MainScreenNavigator = TabNavigator({ 
     ProfileStack: { screen: ProfileStack }, 
     Home: { screen: Home }, 
     HistoryStack: { screen: HistoryStack } 
    }, { 
     initialRouteName: 'Home', 
     tabBarComponent:() => { return null; }, 
     swipeEnabled: true 
    }); 

    return (
     <MainScreenNavigator/> 
    ); 
    } 
} 

在某些時候,我需要從一個屏幕組件禁用刷卡。如何做?沒有重新渲染導航器是否可能?

------ 15/03/2017編輯

試圖傳遞一個回調函數通過screenProps(僅與β-7工作)..但預期它可以追溯到initialRouteName「家」當我做它從重新呈現以來的歷史。

與終極版同樣的問題...

任何建議是更受歡迎!

回答

0

你可以將它變成一個變量並創建一個函數來打開/關閉它。

this.state ={ swipe: true } //set state in constructor 
.... 
toggleSwipe =() => { //function that will be passed down to toggle on/off 
    this.setState((prevState) => ({ swipe: !prevState.swipe }); 
} 
.... 
swipeEnabled: this.state.swipe //this will now get toggled between true/false 
+0

是的,但如何訪問屏幕組件內的函數toggleSwipe?我嘗試使用screenProps,但由於某種原因,當我寫 sebap

+0

時,沒有任何東西被呈現。當您執行時,我不認爲任何東西應該呈現,您只是將this.props.screenProps傳遞給所有選項卡組件。 –

+0

我的意思是說,添加screenProps = {...}像doc說整個應用程序不呈現。另一個問題,但我的想法是將ref傳遞給toggleSwipe frome。在屏幕組件中訪問功能toggleSwipe有什麼想法? – sebap

相關問題