Я пытаюсь выяснить, в какой точке жизненного цикла компонента я могу вызвать measureInWindow
в представлении и гарантированно получить правильные значения обратно. Например:
const Measure = () => {
const ref = React.useRef();
React.useLayoutEffect(() => {
ref.current.measureInWindow((x, y) => {
// y is 0
})
});
return <View ref={ref} />;
};
В приведенном выше примере я получаю 0
для y
, а не 88
, что является правильным значением, поскольку панель навигации такая высокая. Если я поместил вызов measureInWindow
внутри setTimeout
с 0ms
, тогда я получу правильное значение.
Я также попытался использовать useEffect
вместо useLayoutEffect
, и я получил то же самое результат.
РЕДАКТИРОВАТЬ
Комментарий к этому сообщению заставил меня взглянуть на onLayout
опору для View
. Мои начальные тесты показывают, что я могу там успешно позвонить measureInWindow
. Однако я все же хотел бы найти какую-то конкретную документацию, выходящую за рамки лишь моего беглого тестирования.
<View
ref={ref}
onLayout={e => {
ref.current.measureInWindow((x, y) => {
console.log('onLayout', y);
});
}}
/>