在标头中实现本机导航类功能

时间:2017-07-09 18:07:46

标签: react-native react-native-navigation

我在回应原生导航和嵌套导航器方面遇到了问题。

基本上,嵌套导航器(页面中的选项卡)工作得很好。但是当我使用_saveDetails函数在标题中添加一个按钮时,如果我在Players选项卡中,它会给我一个未定义的函数,并且当我在Teams选项卡上它运行良好

有没有人知道我做错了什么?感谢。

class HomeScreen extends React.Component {
  static navigationOptions = ({ navigation }) => {
    const { params = {} } = navigation.state;
    return {
        headerRight: <Button title="Save" onPress={() => 
        params.handleSave()} />
    };
  };

  _saveDetails() {
    console.log('clicked save');
  }

 componentDidMount() {
   this.props.navigation.setParams({ handleSave: this._saveDetails });
 }

 render() {
    return (
        <View />
    );
  }
}

const MainScreenNavigator = TabNavigator({
  Players: { screen: HomeScreen},
  Teams: { screen: HomeScreen},
});

const SimpleApp = StackNavigator({
  Home: { screen: MainScreenNavigator },
  Player: { screen: PlayerPage },
});

2 个答案:

答案 0 :(得分:0)

请尝试这个,如果您解决任何其他问题,请告诉我。只需根据以下代码转换代码即可。

static navigationOptions = {   标题:(导航,标题)=&gt; ({     ...头,     对: (        navigation.navigate(&#39;设置&#39;)}&GT;         设置            )   }) } 感谢

答案 1 :(得分:0)

只需更改您的代码就像这样

class HomeScreen extends React.Component {
  static navigationOptions = ({ navigation }) => {
   // const { params = {} } = navigation.state; //delete this
    return {
        headerRight: <Button title="Save" onPress={() => 
        navigation.state.params.handleSave()} />  // add navigation.state
    };
  };

.....