Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 1x | import React from 'react'; import { useEffect, useState } from 'react'; import { usePrevious, usePortal } from '@uiw/react-baidu-map-utils'; let uid: number = 1; export interface CopyrightControlItemProps { /** * 自定义 DOM 元素。 */ children?: React.ReactNode; /** * 该版权信息所适用的地理区域 */ bounds?: BMap.Bounds; /** * 表示版权控件实例,`CopyrightControl` 给子组件注入的一个版权控件实例属性。 */ control?: BMap.CopyrightControl; } export function CopyrightControlItem(props: CopyrightControlItemProps = {}) { const { children, control, bounds } = props; const [id] = useState(uid++); const { container, Portal } = usePortal(); const prevId = usePrevious(id); useEffect(() => { if (control) { control.addCopyright({ id, bounds, content: container!.innerHTML, }); } return function () { if (prevId && control) { control.removeCopyright(prevId); } }; }, [bounds, children, container, control, id, prevId]); return <Portal>{children}</Portal>; } |