是否可以检查反应导航堆栈中的屏幕数量?我只需要在堆栈的第一个屏幕的标题中显示徽标组件。
答案 0 :(得分:2)
Andrew 解决方案适合您,但那些想要获得更新状态的人必须使用 useNavigationState,根据导航文档:
<块引用>navigation.dangerouslyGetState() 函数还返回当前导航状态。主要区别在于 useNavigationState 钩子会在值更改时触发重新渲染,而 navigation.dangerouslyGetState() 不会。
就这样使用:
const index = useNavigationState(state => state.index);
答案 1 :(得分:1)
可以。您可以使用
let index = this.props.navigation.dangerouslyGetParent().state.index;
获取堆栈中的索引。如果索引为0,则您位于堆栈的第一个屏幕上。
您可以详细了解here。您的用例正是该用途:
另一个很好的用例是找到活动目录的索引 父母的路线列表中的路线。所以在堆叠的情况下 在索引0处,那么您可能不希望渲染后退按钮,但是如果 如果您在列表中的其他位置,则将显示“后退”按钮。
请记住要确保该调用返回有效值。