import { useState, useCallback } from "react"; import { LayoutChangeEvent } from "react-native"; type Size = { width: number; height: number; }; type UseLayoutReturnType = [Size, (event: LayoutChangeEvent) => void]; export const useLayout = (): UseLayoutReturnType => { const [size, setSize] = useState({ width: 0, height: 0 }); const onLayout = useCallback((event: LayoutChangeEvent) => { const { width, height } = event.nativeEvent.layout; setSize({ width, height }); }, []); return [size, onLayout]; };