From 9c75794ee76e28d7f51cc47656a00ed711bc9936 Mon Sep 17 00:00:00 2001 From: yoyo837 Date: Sun, 28 Sep 2025 17:39:27 +0800 Subject: [PATCH 1/7] chore: move rc-util to @rc-components --- package.json | 2 +- src/Immutable.tsx | 2 +- src/context.tsx | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 71f8881..62807fd 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ }, "dependencies": { "@babel/runtime": "^7.10.1", - "rc-util": "^5.27.0" + "@rc-component/util": "^1.3.0" }, "devDependencies": { "@rc-component/father-plugin": "^1.0.0", diff --git a/src/Immutable.tsx b/src/Immutable.tsx index 3afb596..c34c87e 100644 --- a/src/Immutable.tsx +++ b/src/Immutable.tsx @@ -1,4 +1,4 @@ -import { supportRef } from 'rc-util/lib/ref'; +import { supportRef } from '@rc-component/util/lib/ref'; import * as React from 'react'; export type CompareProps> = ( diff --git a/src/context.tsx b/src/context.tsx index 68f6c57..69948b0 100644 --- a/src/context.tsx +++ b/src/context.tsx @@ -1,6 +1,6 @@ -import useEvent from 'rc-util/lib/hooks/useEvent'; -import useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect'; -import isEqual from 'rc-util/lib/isEqual'; +import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; +import useEvent from '@rc-component/util/lib/hooks/useEvent'; +import isEqual from '@rc-component/util/lib/isEqual'; import * as React from 'react'; import { unstable_batchedUpdates } from 'react-dom'; From 5fe3fdc28e935b54726221a5b845891fd6f4a174 Mon Sep 17 00:00:00 2001 From: yoyo837 Date: Sun, 28 Sep 2025 17:44:13 +0800 Subject: [PATCH 2/7] update --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 62807fd..7824e26 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "coverage": "father test --coverage", "lint": "eslint src/ docs/ --ext .tsx,.ts,.jsx,.js", "now-build": "npm run build", - "prepublishOnly": "npm run compile && np --yolo --no-publish", + "prepublishOnly": "npm run compile && rc-np", "start": "dumi dev", "test": "rc-test", "tsc": "tsc --noEmit" @@ -39,7 +39,8 @@ "@rc-component/util": "^1.3.0" }, "devDependencies": { - "@rc-component/father-plugin": "^1.0.0", + "@rc-component/father-plugin": "^2.0.2", + "@rc-component/np": "^1.0.4", "@types/jest": "^29.5.0", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", @@ -51,7 +52,6 @@ "eslint-plugin-jest": "^28.2.0", "eslint-plugin-unicorn": "^52.0.0", "father": "^4.0.0", - "np": "^10.0.4", "rc-test": "^7.0.14", "react": "^18.0.0", "react-dom": "^18.0.0", From 71eeb2910322fb8c3669e6a4dbd6a8160afc37b3 Mon Sep 17 00:00:00 2001 From: yoyo837 Date: Sun, 28 Sep 2025 17:45:56 +0800 Subject: [PATCH 3/7] fix --- now.json | 11 ----------- tsconfig.json | 12 +++--------- 2 files changed, 3 insertions(+), 20 deletions(-) delete mode 100644 now.json diff --git a/now.json b/now.json deleted file mode 100644 index 0b0bc3f..0000000 --- a/now.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 2, - "name": "rc-context", - "builds": [ - { - "src": "package.json", - "use": "@now/static-build", - "config": { "distDir": ".doc" } - } - ] -} diff --git a/tsconfig.json b/tsconfig.json index 56cdc96..4966b43 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,15 +8,9 @@ "skipLibCheck": true, "esModuleInterop": true, "paths": { - "@/*": [ - "src/*" - ], - "@@/*": [ - ".dumi/tmp/*" - ], - "@rc-component/context": [ - "src/index.ts" - ] + "@/*": ["src/*"], + "@@/*": [".dumi/tmp/*"], + "@rc-component/context": ["src/index.ts"] } }, "include": [".dumi/**/*", ".dumirc.ts", "**/*.ts", "**/*.tsx"] From 89ae370a8779ca93f166bfe383d9030d8f009699 Mon Sep 17 00:00:00 2001 From: yoyo837 Date: Sun, 28 Sep 2025 18:00:49 +0800 Subject: [PATCH 4/7] fix --- src/Immutable.tsx | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/Immutable.tsx b/src/Immutable.tsx index c34c87e..ca5eea6 100644 --- a/src/Immutable.tsx +++ b/src/Immutable.tsx @@ -6,6 +6,8 @@ export type CompareProps> = ( nextProps: Readonly>, ) => boolean; +type ImmutableProps> = Omit, 'ref'>; + /** * Create Immutable pair for `makeImmutable` and `responseImmutable`. */ @@ -32,10 +34,10 @@ export default function createImmutable() { function makeImmutable>( Component: T, shouldTriggerRender?: CompareProps, - ): T { + ): React.ComponentType> { const refAble = supportRef(Component); - const ImmutableComponent = function (props: any, ref: any) { + const ImmutableComponent = (props: ImmutableProps, ref: React.Ref) => { const refProps = refAble ? { ref } : {}; const renderTimesRef = React.useRef(0); const prevProps = React.useRef(props); @@ -43,13 +45,13 @@ export default function createImmutable() { // If parent has the context, we do not wrap it const mark = useImmutableMark(); if (mark !== null) { - return ; + return ; } if ( // Always trigger re-render if not provide `notTriggerRender` !shouldTriggerRender || - shouldTriggerRender(prevProps.current, props) + shouldTriggerRender(prevProps.current as any, props as any) ) { renderTimesRef.current += 1; } @@ -58,7 +60,7 @@ export default function createImmutable() { return ( - + ); }; @@ -67,7 +69,9 @@ export default function createImmutable() { ImmutableComponent.displayName = `ImmutableRoot(${Component.displayName || Component.name})`; } - return refAble ? React.forwardRef(ImmutableComponent) : (ImmutableComponent as any); + return refAble + ? (React.forwardRef(ImmutableComponent) as React.ComponentType>) + : (ImmutableComponent as unknown as React.ComponentType>); } /** @@ -77,14 +81,13 @@ export default function createImmutable() { function responseImmutable>( Component: T, propsAreEqual?: CompareProps, - ): T { + ): React.ComponentType> { const refAble = supportRef(Component); - const ImmutableComponent = function (props: any, ref: any) { + const ImmutableComponent = (props: ImmutableProps, ref: React.Ref) => { const refProps = refAble ? { ref } : {}; useImmutableMark(); - - return ; + return ; }; if (process.env.NODE_ENV !== 'production') { @@ -94,8 +97,12 @@ export default function createImmutable() { } return refAble - ? React.memo(React.forwardRef(ImmutableComponent), propsAreEqual) - : (React.memo(ImmutableComponent, propsAreEqual) as any); + ? (React.memo(React.forwardRef(ImmutableComponent), propsAreEqual) as React.ComponentType< + React.ComponentProps + >) + : (React.memo(ImmutableComponent, propsAreEqual) as unknown as React.ComponentType< + React.ComponentProps + >); } return { From 0a1eda035e71f5fd098e3f1d22a06ac2ab74f19d Mon Sep 17 00:00:00 2001 From: Amumu Date: Sun, 28 Sep 2025 18:01:40 +0800 Subject: [PATCH 5/7] Apply suggestion from @gemini-code-assist[bot] Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- src/context.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/context.tsx b/src/context.tsx index 69948b0..3e2285e 100644 --- a/src/context.tsx +++ b/src/context.tsx @@ -1,5 +1,5 @@ -import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; import useEvent from '@rc-component/util/lib/hooks/useEvent'; +import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; import isEqual from '@rc-component/util/lib/isEqual'; import * as React from 'react'; import { unstable_batchedUpdates } from 'react-dom'; From 86ecf9c5e19d8d25990bfc810d65d9e976c3a916 Mon Sep 17 00:00:00 2001 From: yoyo837 Date: Mon, 29 Sep 2025 09:55:29 +0800 Subject: [PATCH 6/7] remove babel --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 7824e26..698d942 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "tsc": "tsc --noEmit" }, "dependencies": { - "@babel/runtime": "^7.10.1", "@rc-component/util": "^1.3.0" }, "devDependencies": { From bc162f43f1148e04f4a1c8c4fa69e9c630c92b9c Mon Sep 17 00:00:00 2001 From: yoyo837 Date: Mon, 29 Sep 2025 10:09:30 +0800 Subject: [PATCH 7/7] change comment --- src/Immutable.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Immutable.tsx b/src/Immutable.tsx index ca5eea6..b8127d4 100644 --- a/src/Immutable.tsx +++ b/src/Immutable.tsx @@ -49,7 +49,7 @@ export default function createImmutable() { } if ( - // Always trigger re-render if not provide `notTriggerRender` + // Always trigger re-render if `shouldTriggerRender` is not provided !shouldTriggerRender || shouldTriggerRender(prevProps.current as any, props as any) ) {