React Navigation获取堆栈标题高度

Ave*_*235 4 react-native react-navigation

如何以编程方式获取StackNavigator标头的高度?

当释放A上的平移手势(拖动)时,我需要检测组件A的位置是否在组件B内.然而,相对于整个屏幕测量来自onPanResponderReleases gesture.moveY的位置,而onLayout相对于父视图测量从A返回的位置.因此,我需要知道父视图的当前高度以协调差异.

Flo*_*ues 20

您可以像这样访问标题高度

import { Header } from 'react-navigation';
Header.HEIGHT;
Run Code Online (Sandbox Code Playgroud)

源代码

Spencer Carli的学分

  • V5 解决方案给了我这个错误:`错误:找不到标题高度。您是否在堆栈中的屏幕内?`或:`错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用......`。 (9认同)
  • 这不会在iPhone X中返回正确的高度 (6认同)

Ham*_*m.i 8

对于 React 导航 V6:

您可以将其用于功能组件

import { useHeaderHeight } from '@react-navigation/elements';
Run Code Online (Sandbox Code Playgroud)

这对于类组件和功能组件都是如此

import { HeaderHeightContext } from '@react-navigation/elements';

// ...

<HeaderHeightContext.Consumer>
  {headerHeight => {
    /* render something and use "headerHeight" in child components*/
  }}
</HeaderHeightContext.Consumer>
Run Code Online (Sandbox Code Playgroud)

从这里阅读更多内容