2

我正在使用react-navigation并希望在标题右侧添加一个按钮,该按钮将导航到不同的屏幕。但是在设置时navigationOptions,我想知道如何访问navigate按下按钮时调用的回调中的函数:

const RootNavigationStack = StackNavigator({
  PokemonList: {
    screen: PokemonListWrapper,
    navigationOptions: {
      title: ({state}) => `Pokedex`,
      header: ({ state, setParams }) => {
        return {
          visible: true,
          right: (
            <Button
              title={'Add'}
              onPress={() => // navigate to new screen here
            />
          ),
        }
      }
    },
  },
, {
  headerMode: 'screen'
})

有什么想法可以实现吗?我在考虑也许使用withNavigation,但仍然不太清楚它是如何工作的。

4

4 回答 4

7

另一个答案适用于旧版本的反应导航。

对于新版本,试试这个:

static navigationOptions = ({ navigation }) => ({
        headerRight: (
            <Button 
                title='Setting' 
                onPress={ () => navigation.navigate('RouteName') }                
                backgroundColor= "rgba(0,0,0,0)"
                color="rgba(0,122,255,1)"
            />
        )});
于 2018-07-29T13:23:31.203 回答
5

我用这个解决了同样的问题(在 Screen/Component Class 内)

static navigationOptions = ({navigation}) => {
  return {
    title: 'Next',
    headerRight: <Button
                     title="Next"

                     onPress={ () => navigation.navigate('RegPasswordScreen')} />

  };
};
于 2017-12-27T12:26:43.800 回答
2

尝试这个。

    header: ({ navigate }) => ({
       right: (
          <Button onPress={() => navigate('screen2')}  />
       )
    }),
于 2017-03-30T12:02:39.533 回答
0

在最新版本中,您可以通过钩子来执行此操作。

import { useNavigation } from '@react-navigation/native';

const CustomHeaderComponent = (props) => {
  const navigation = useNavigation();
  return <Button onPress={() => navigation.navigate('screen2')} />;
}
于 2021-12-27T12:39:43.883 回答