React Native 自定义 Hook 获取组件位置和大小

在 React Native 中自定义 Hook useLayout 获取 View、Pressable 等组件的位置和大小的信息

import {useState, useCallback} from 'react'
import {LayoutChangeEvent, LayoutRectangle} from 'react-native'

export function useLayout() {
  const [layout, setLayout] = useState<LayoutRectangle>({
    x: 0,       // 目标元素相对父元素的X轴距离
    y: 0,       // 目标元素相对父元素的Y轴距离
    width: 0,   // 目标元素的宽度
    height: 0,  // 目标元素的高度
  })

  const onLayout = useCallback(
    (e: LayoutChangeEvent) => setLayout(e.nativeEvent.layout),
    [],
  )

  return {
    onLayout,
    ...layout,
  }
}

onLayout 这个在列表组件中弹窗很有用,可以方便的使用它来获取位置信息。

import { useLayout } from './useLayout'
 
 function MyComponent() {
 
    const { x, y, width, height, onLayout } = useLayout()
    
    return (<View style={{height:800,backgroundColor:'#d9f'}}>
	<Pressable onLayout={onLayout} style={{width:100,height:100,backgroundColor:'red'}} />
	<View style={{
		position:'absolute',
		top:y,
		left:x,
		backgroundColor:'#eea',
		width:100,
		height:100
	}}>
		<Text>{`x:${x}`}</Text>
		<Text>{`y:${y}`}</Text>
	</View>
</View>)
}

在这里插入图片描述

在这里插入图片描述

相关推荐

  1. React定义Hook之useModel hook

    2024-07-17 08:10:03       66 阅读
  2. React】如何定义 Hooks

    2024-07-17 08:10:03       19 阅读
  3. 深入React Hoooks:从基础到定义 Hooks

    2024-07-17 08:10:03       22 阅读
  4. # 14 React 定义Hook详解

    2024-07-17 08:10:03       38 阅读
  5. React@16.x(24)定义HOOK

    2024-07-17 08:10:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 08:10:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 08:10:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 08:10:03       58 阅读
  4. Python语言-面向对象

    2024-07-17 08:10:03       69 阅读

热门阅读

  1. Docker

    2024-07-17 08:10:03       24 阅读
  2. ODrive学习笔记四——编码器流

    2024-07-17 08:10:03       30 阅读
  3. 基于深度学习的机器人控制

    2024-07-17 08:10:03       25 阅读
  4. C++ ‘##’ 运算符使用

    2024-07-17 08:10:03       20 阅读
  5. python3多线程用途和场景

    2024-07-17 08:10:03       20 阅读
  6. 2024年还能入局网络安全吗?

    2024-07-17 08:10:03       22 阅读
  7. 树莓派docker自制镜像

    2024-07-17 08:10:03       23 阅读
  8. React基础学习-Day06

    2024-07-17 08:10:03       22 阅读