如何从另一个组件访问“ DrawerCustom.Navigator”组件的导航道具

时间:2020-06-22 15:37:26

标签: javascript reactjs react-native

我是新来的响应本机和即时消息的人,我试图构建一个应用程序,其中工具栏位于抽屉上方,并且工具栏具有一个按钮,可以打开抽屉,如图所示: enter image description here

正如您所看到的,我要实现的目标是始终使工具栏可见,即使打开抽屉也是如此。 我设法做到这一点,问题在于,由于工具栏位于“ DrawerCustom.Navigator”组件外部,因此我无法访问工具栏组件内部的prop导航,每次单击按钮时都需要打开抽屉(带3个黑色条的按钮)。 这是我放置工具栏和抽屉组件的方式:

<NavigationContainer>
          <View style={{...styles.default,...styles.marginTopPhone}}> 
            <ToolbarLogged toggleDrawer={()=>{navigation.toggleDrawer()}}
                idLang={(stringLang==strings_pt)?1:2} lang={stringLang}/>
            <DrawerCustom.Navigator ref={DrawerRef} drawerContent={props => <DrawerContent langFile={stringLang} lang={(stringLang==strings_pt)? 1 : 0}  {...{...props}}/>}>
                <DrawerCustom.Screen name='Dashboard' component={makeLayout} initialParams={{ name: stringLang.dashboard}}/>
                <DrawerCustom.Screen name='Condominium' component={makeLayout} initialParams={{ name: stringLang.condominium}}/>
                <DrawerCustom.Screen name='Profile' component={makeLayout} initialParams={{ name: stringLang.profile}}/>
                <DrawerCustom.Screen name='Signout' component={Signout} />
            </DrawerCustom.Navigator>
          </View>
</NavigationContainer>

每个屏幕具有的makeLayout组件是根据参数“名称”加载当前屏幕的功能,如果名称为profile,则makeLayout函数将加载配置文件屏幕。

1 个答案:

答案 0 :(得分:0)

您应该使用ToolbarLogged组件内的'useNavigation'钩子,该钩子将使您能够访问导航。只要组件位于NavigationContainer内部,此方法就可以工作。

以下是按钮的示例,您也可以对组件执行相同的操作

mapply(
  function(pH, TA) {
    return(aquaenv(S=0,t=0,p=0,SumCO2=NULL, pH=pH, TA=TA)$SumCO2)
  }, Erie$pH, Erie$ALKALINITY..mg.L
)

您可以查看reference了解更多详细信息