React Native 0.6 - 导航到子级时替换标题

Posted

技术标签:

【中文标题】React Native 0.6 - 导航到子级时替换标题【英文标题】:React Native 0.6 - Replace Header when Navigating to Child 【发布时间】:2021-11-19 12:06:47 【问题描述】:

当导航到堆栈中的子屏幕或兄弟屏幕时,我正在尝试替换标题栏。

基本上我的主堆栈是这样的:

<MainStack.Navigator initialRouteName="Home">
      <MainStack.Screen name="Home" options=
        headerTitle: () => <LogoTitle />,
        tabBarLabel: '',
        tabBarIcon: ( color ) => (
          <AntDesign name='home' backgroundColor='black' color=color size=23 />
        )
       component=HomeStackScreens />
    </MainStack.Navigator>

还有这里的 LogoTitle:

function LogoTitle() 

  const navigation = useNavigation(); 

  return (
    <View style= width: width, flexDirection: 'row', justifyContent: 'space-between' >
      <View>
        <Text style= fontWeight: 'bold' >Brand</Text>
      </View>
      <View></View>
      <View style= width: 50 >
        <AntDesign name='dingding' backgroundColor="#ff" size=23 onPress=() => navigation.reset(
          index: 0,
          routes: [ name: 'New' ],
        ) />
      </View>
    </View>
  );

最后是 HomeStackScreen :

function HomeStackScreens() 


  const  username  = React.useContext(UserContext) ;

  return (
    <HomeStack.Navigator initialRouteName="Home">
      <HomeStack.Screen name="Home" options= headerShown: false  component=HomeScreen />
      <HomeStack.Screen name="New" options= title: username  component=NewScreen />
     
    </HomeStack.Navigator>
  );

当我点击 AntDesign 图标时,我想导航到“新”屏幕,并将 LogoTitle 标题替换为类似于“

基本上,看起来我想在堆栈上推送一个屏幕,但不显示父/上一个屏幕的标题。

我怎样才能做到这一点?

(如果这是一个愚蠢的问题,我是 React Native 的新手,抱歉)。

我最初的想法是我应该更新一个状态,比如 useNavigation 反映的导航状态,但我不确定具体如何(我想为此创建一个自定义上下文将是多余的,因为感觉 useNavigation 可以提供这种行为)。

【问题讨论】:

【参考方案1】:

实际上我应该只是从 MainStack Screen 标题中删除标题,并将其放在 HomeStack Screen 标题中。

它按预期工作。

【讨论】:

【参考方案2】:

在 NewScreen 上,您可以使用以下内容:

useEffect(()=>
      navigation.setOptions( headerTitle: 'Title of the Screen'  )
  ,[])

你可以使用任何你想要的标题。您也可以将前一屏的标题作为道具传递。

【讨论】:

感谢您的回答。这会更改新屏幕的标题标题,而不是父屏幕。我想隐藏父母的标题,并且只有带有后退按钮和自定义标题的新标题(设置自定义标题没有问题,但在子项中隐藏父标题)。 从这篇文章github.com/react-navigation/react-navigation/issues/1037看来,合适的方法是在上下文/减速器中处理它。

以上是关于React Native 0.6 - 导航到子级时替换标题的主要内容,如果未能解决你的问题,请参考以下文章

当 UITableViewController 是 UITabBarController 的子级时,滚动不起作用

Hibernate @OneToMany 在更新父级时从列表中删除子级

为啥当我在 grails 上删除一对多关系上的父级时,会在子级上调用 beforeInsert 事件?

尝试从父级 IOS swift 3 中删除子级时,我的代表为零

当我在层次结构中添加额外的 SKNode 子级时,SKCropNode 失败

尝试基于 AsyncStorage React-Native 渲染组件时,对象作为反应子级无效