From 621e66dca2a63cd81ee4b5db2eae37e3a998007f Mon Sep 17 00:00:00 2001 From: "liujuping.liujupin" Date: Wed, 29 Sep 2021 20:42:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=83=A8=E5=88=86=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E4=BF=AE=E6=94=B9=E4=B8=8D=E7=94=9F=E6=95=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/renderer-core/src/hoc/leaf.tsx | 54 +++++++++++-------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/packages/renderer-core/src/hoc/leaf.tsx b/packages/renderer-core/src/hoc/leaf.tsx index 49e34cd7b..c309e6e84 100644 --- a/packages/renderer-core/src/hoc/leaf.tsx +++ b/packages/renderer-core/src/hoc/leaf.tsx @@ -27,7 +27,7 @@ export type IComponentHoc = { export type IComponentConstruct = (Comp: types.IBaseRenderer, info: IComponentHocInfo) => types.Constructor; -const whitelist: string[] = []; +// const whitelist: string[] = []; interface IProps { _leaf: Node | undefined; @@ -135,15 +135,19 @@ export function leafWrapper(Comp: types.IBaseRenderer, { this.recordInfo.node = node; } - get isInWhitelist() { - return whitelist.includes(schema.componentName); - } + // get isInWhitelist() { + // return whitelist.includes(schema.componentName); + // } componentWillReceiveProps(nextProps: any) { const { _leaf, __tag, children, ...rest } = nextProps; if (nextProps.__tag === this.state.__tag) { + const nextProps = getProps(this.leaf?.export?.(TransformStage.Render) as types.ISchema, Comp, componentInfo); this.setState({ - nodeProps: rest, + nodeProps: { + ...rest, + ...nextProps, + }, }); return null; } @@ -163,32 +167,6 @@ export function leafWrapper(Comp: types.IBaseRenderer, { }); } - // static getDerivedStateFromProps(props: any, state: any) { - // if (props.__tag === state.__tag) { - // return null; - // } - // if (props._leaf && this.state.leaf && props._leaf !== this.state.leaf) { - // this.disposeFunctions.forEach(fn => fn()); - // } - - // return { - // nodeChildren: props.children, - // nodeProps: props.nodeProps, - // childrenInState: true, - // __tag: props.__tag, - // _leaf: props._leaf, - // }; - // } - - shouldComponentUpdate() { - if (this.isInWhitelist) { - __debug(`${schema.componentName} is in leaf Hoc whitelist`); - container.rerender(); - return false; - } - - return true; - } /** 监听参数变化 */ initOnPropsChangeEvent(leaf = this.leaf): void { @@ -198,6 +176,11 @@ export function leafWrapper(Comp: types.IBaseRenderer, { } = propChangeInfo; const node = leaf; + // if (this.isInWhitelist) { + // container.rerender(); + // return; + // } + // 如果循坏条件变化,从根节点重新渲染 // 目前多层循坏无法判断需要从哪一层开始渲染,故先粗暴解决 if (key === '___loop___') { @@ -229,6 +212,11 @@ export function leafWrapper(Comp: types.IBaseRenderer, { return; } + // if (this.isInWhitelist) { + // container.rerender(); + // return; + // } + __debug(`${leaf?.componentName} component trigger onVisibleChange event`); this.beforeRender(RerenderType.VisibleChanged); this.setState({ @@ -248,6 +236,10 @@ export function leafWrapper(Comp: types.IBaseRenderer, { type, node, } = param || {}; + // if (this.isInWhitelist) { + // container.rerender(); + // return; + // } this.beforeRender(`${RerenderType.ChildChanged}-${type}`, node); __debug(`${leaf} component trigger onChildrenChange event`); const nextChild = getChildren(leaf?.export?.(TransformStage.Render) as types.ISchema, Comp);