diff --git a/packages/dooringx-doc/src/docs/3.7.md b/packages/dooringx-doc/src/docs/3.7.md index 63ac56a..6c4e6a1 100644 --- a/packages/dooringx-doc/src/docs/3.7.md +++ b/packages/dooringx-doc/src/docs/3.7.md @@ -15,6 +15,10 @@ const ContextMenu = () => { const handleclick = () => { unmountContextMenu(); }; + const forceUpdate = useState(0)[1]; + contextMenuState.forceUpdate = () => { + forceUpdate((pre) => pre + 1); + }; return (
; 所以在点击后需要调用关闭。 -同时上面的left和top是右键的位置。 \ No newline at end of file +同时上面的left和top是右键的位置。 + +另外,你还需要在组件内增加个强刷赋值给forceUpdate,用于在组件移动时进行跟随。 \ No newline at end of file diff --git a/packages/dooringx-example/src/layouts/index.tsx b/packages/dooringx-example/src/layouts/index.tsx index 9fd68e9..2d4694d 100644 --- a/packages/dooringx-example/src/layouts/index.tsx +++ b/packages/dooringx-example/src/layouts/index.tsx @@ -2,17 +2,16 @@ * @Author: yehuozhili * @Date: 2021-07-07 14:51:17 * @LastEditors: yehuozhili - * @LastEditTime: 2021-07-10 19:07:10 + * @LastEditTime: 2021-07-13 19:55:15 * @FilePath: \dooringx\packages\dooringx-example\src\layouts\index.tsx */ import { Button } from 'antd'; -import { UserConfig } from 'dooringx-lib/dist'; +import { UserConfig } from 'dooringx-lib'; import 'dooringx-lib/dist/dooringx-lib.esm.css'; -import { createContext } from 'react'; +import { createContext, useState } from 'react'; import { IRouteComponentProps } from 'umi'; import plugin from '../plugin'; import 'antd/dist/antd.css'; -import 'dooringx-lib/dist/dooringx-lib.esm'; import '../global.less'; import 'animate.css'; @@ -26,6 +25,10 @@ const ContextMenu = () => { const handleclick = () => { unmountContextMenu(); }; + const forceUpdate = useState(0)[1]; + contextMenuState.forceUpdate = () => { + forceUpdate((pre) => pre + 1); + }; return (
{ } }; +const directionArr: directionType[] = [ + 'top', + 'topleft', + 'left', + 'topright', + 'bottomleft', + 'bottom', + 'right', + 'bottomright', +]; + export function BlockResizer(props: BlockResizerProps) { const render = useMemo(() => { if (props.data.focus && props.data.resize) { return ( <> -
{ - onMouseDown(e, 'top', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
-
{ - onMouseDown(e, 'topleft', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
-
{ - onMouseDown(e, 'left', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
-
{ - onMouseDown(e, 'topright', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
-
{ - onMouseDown(e, 'bottomleft', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
-
{ - onMouseDown(e, 'bottom', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
-
{ - onMouseDown(e, 'right', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
-
{ - onMouseDown(e, 'bottomright', props.data, props.rect, props.config); - }} - onMouseUp={() => { - resizerMouseUp(props.config); - }} - >
+ {directionArr.map((v) => { + return ( +
{ + onMouseDown(e, v, props.data, props.rect, props.config); + }} + onMouseUp={() => { + resizerMouseUp(props.config); + }} + >
+ ); + })} ); } else { return null; } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [props.data.focus, props.data.resize]); + }, [props.config, props.data, props.rect]); return <>{render}; } diff --git a/yarn.lock b/yarn.lock index 590c4a2..48a74fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4692,7 +4692,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.4, classnames@^2.2.5, classnames@^2.2.6: +classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.4, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==