From 4128654347d06406a385a724028f90640cbfb07c Mon Sep 17 00:00:00 2001 From: Rainke Date: Fri, 18 Aug 2023 15:01:11 +0800 Subject: [PATCH] fix: default FaultComponent can not get componentName (#2385) --- .../renderer-core/src/renderer/renderer.tsx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/renderer-core/src/renderer/renderer.tsx b/packages/renderer-core/src/renderer/renderer.tsx index 88cc0ce02..09559b6f8 100644 --- a/packages/renderer-core/src/renderer/renderer.tsx +++ b/packages/renderer-core/src/renderer/renderer.tsx @@ -135,17 +135,20 @@ export default function rendererFactory(): IRenderComponent { return engine.createElement(engine.getFaultComponent(), { ...this.props, error: this.state.error, + componentName: this.props._componentName }); } return originRender.call(this); }; - const originShouldComponentUpdate = SetComponent.prototype.shouldComponentUpdate; - SetComponent.prototype.shouldComponentUpdate = function (nextProps: IRendererProps, nextState: any) { - if (nextState && nextState.engineRenderError) { - return true; - } - return originShouldComponentUpdate ? originShouldComponentUpdate.call(this, nextProps, nextState) : true; - }; + if(!(SetComponent.prototype instanceof PureComponent)) { + const originShouldComponentUpdate = SetComponent.prototype.shouldComponentUpdate; + SetComponent.prototype.shouldComponentUpdate = function (nextProps: IRendererProps, nextState: any) { + if (nextState && nextState.engineRenderError) { + return true; + } + return originShouldComponentUpdate ? originShouldComponentUpdate.call(this, nextProps, nextState) : true; + }; + } } createElement(SetComponent: any, props: any, children?: any) {