【发布时间】:2018-11-23 08:33:56
【问题描述】:
我正在构建一个 React Native 应用程序,我使用 React Navigation (V3) 进行导航。对于我的 UI 元素,我使用 React Native Elements。
我有一个在多个导航器中重复使用的屏幕。有时它位于堆栈的根部,有时它被堆栈推动。我想根据其在堆栈中的位置以编程方式将headerLeft 元素添加到此屏幕navigationOptions,因为如果屏幕位于根目录,我希望显示默认的后退按钮或显示汉堡菜单图标堆栈(因为堆栈嵌套在抽屉中)。
所以我尝试了以下方法:
export class ScannerScreen extends Component {
static navigationOptions = ({ navigation }) => ({
headerLeft:
navigation.state.index > 0 ? (
undefined
) : (
<Icon type="ionicon" name="ios-menu" onPress={navigation.toggleDrawer} />
),
title: strings.scannerTitle
});
// ...
问题是这不起作用,因为navigation.state.index 在这里是undefined。使用 React 导航如何做到这一点?
编辑:
根据要求,我添加了console.log(navigation) 的屏幕截图(通过<Icon />s onPress。)
【问题讨论】:
-
你能在 onPress 上放一个 'console.log(navigation)' 吗?
-
@kivul 完成!我编辑了问题。
-
我可能错了,但我没有看到 state.index。您的状态对象上有“key”、“params”和“routeName”
-
@kivul 是的,这正是问题所在。我想知道如何从屏幕访问
index? There is a way to access it while defining the navigator,但您无法从那里访问headerLeft。
标签: react-native react-navigation react-navigation-stack