2017-10-16 58 views
0

我想添加一個'重新加載'按鈕到我的頭,我通過調用setParams。問題是,這會導致與TabNavigator在推出導航到標籤React導航 - 設置參數,無需導航到現場

export default class FeedScreen extends React.Component { 
    static navigationOptions = ({ navigation }) => { 
     const { params } = navigation.state; 
     if (params) { 
      return { 
       headerRight: <Icon.Button 
        color="black" 
        backgroundColor="transparent" 
        underlayColor="transparent" 
        name="reload" 
        onPress={ params.reload } 
       /> 
      }; 
     } 
    } 

    constructor (props) { 
     super(props); 

     // We want to set attach a reload function to the navigation 
     this.props.navigation.setParams({ 
      reload: this._reloadFeed.bind(this) 
     }); 
    } 

那麼,有沒有辦法setParams無法瀏覽到這一幕,或者是有分配的功能,以這個圖標不調用setParams的方法嗎?

回答

0

您是否嘗試將onPress = {params.reload}設置爲onPress = {()=> params.reload()}?

export default class FeedScreen extends React.Component { 
    static navigationOptions = ({ navigation }) => { 
     const { params } = navigation.state; 
     if (params) { 
      return { 
       headerRight: <Icon.Button 
        color="black" 
        backgroundColor="transparent" 
        underlayColor="transparent" 
        name="reload" 
        onPress={() => params.reload() } < ----- 
       /> 
      }; 
     } 
    } 

    constructor (props) { 
     super(props); 

     // We want to set attach a reload function to the navigation 
     this.props.navigation.setParams({ 
      reload: this._reloadFeed.bind(this) 
     }); 
    } 
+0

沒有有所作爲 – user1537360

0

您可能正在尋找Navigation Actions,特別是導航的行動,被稱爲「setParams」(不帶navigation.setParams()混淆),你派遣這樣:navigation.dispatch(myCreatedSetParamsAction)

+0

不幸的是這還是引起了導航到場景 – user1537360

+0

@ user1537360也許你不需要。綁定喲你的_reloadFeed函數。另外,也許,你應該在navigatorConfig中設置initialRouteParams,而不是在構造函數中設置setParams。 – Eduard

0

我能夠解決此從頭文件中調用一個靜態函數,然後將這個靜態函數更新到componentDidMount中的重裝函數中。這是hacky,但工程。我的組件外

功能:

let _reloadFunction =() => { 
    // This exists because react navigation is a mess 
} 

導航選項

static navigationOptions = { 
     headerRight: <Icon.Button 
         color="black" 
         backgroundColor="transparent" 
         underlayColor="transparent" 
         name="reload" 
         onPress={() => { _reloadFunction() }} 
        /> 
    } 

在組件:

 // Gonna update that reloadFunction so the header works 
     _reloadFunction = this._reloadFeed.bind(this);