From 2bf7a76586e0429218fe3c820b557a2c03c520e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=97=E5=98=89=E7=94=B7?= <574980606@qq.com> Date: Mon, 29 Apr 2024 00:06:03 +0800 Subject: [PATCH 1/3] chore: add devDependencies --- package.json | 1 + src/ref.ts | 19 ++++++++----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 2f9784bc..ca8fc82f 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@types/jest": "^29.4.0", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", + "@types/react-is": "^18.3.0", "@types/responselike": "^1.0.0", "@types/warning": "^3.0.0", "@umijs/fabric": "^3.0.0", diff --git a/src/ref.ts b/src/ref.ts index 7beb41c1..9128b7d6 100644 --- a/src/ref.ts +++ b/src/ref.ts @@ -1,6 +1,6 @@ -/* eslint-disable no-param-reassign */ +/* eslint-disable no-param-reassign,react-hooks/exhaustive-deps */ import type * as React from 'react'; -import { isValidElement, ReactNode } from 'react'; +import { isValidElement } from 'react'; import { ForwardRef, isFragment, isMemo } from 'react-is'; import useMemo from './hooks/useMemo'; @@ -28,16 +28,16 @@ export function composeRef(...refs: React.Ref[]): React.Ref { }; } -export function useComposeRef(...refs: React.Ref[]): React.Ref { +export const useComposeRef = (...refs: React.Ref[]): React.Ref => { return useMemo( () => composeRef(...refs), refs, (prev, next) => prev.length !== next.length || prev.every((ref, i) => ref !== next[i]), ); -} +}; -export function supportRef(nodeOrComponent: any): boolean { +export const supportRef = (nodeOrComponent: any): boolean => { const type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type; @@ -59,19 +59,16 @@ export function supportRef(nodeOrComponent: any): boolean { ) { return false; } - return true; -} +}; -export function supportNodeRef(node: ReactNode): boolean { +export const supportNodeRef = (node: React.ReactNode): boolean => { if (!isValidElement(node)) { return false; } - if (isFragment(node)) { return false; } - return supportRef(node); -} +}; /* eslint-enable */ From 337d5da72e22d25e0021c922381da01978f9ebdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=97=E5=98=89=E7=94=B7?= <574980606@qq.com> Date: Mon, 29 Apr 2024 09:12:30 +0800 Subject: [PATCH 2/3] chore: fix --- src/ref.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ref.ts b/src/ref.ts index 9128b7d6..89c488f7 100644 --- a/src/ref.ts +++ b/src/ref.ts @@ -28,16 +28,16 @@ export function composeRef(...refs: React.Ref[]): React.Ref { }; } -export const useComposeRef = (...refs: React.Ref[]): React.Ref => { +export function useComposeRef(...refs: React.Ref[]): React.Ref { return useMemo( () => composeRef(...refs), refs, (prev, next) => prev.length !== next.length || prev.every((ref, i) => ref !== next[i]), ); -}; +} -export const supportRef = (nodeOrComponent: any): boolean => { +export function supportRef(nodeOrComponent: any): boolean { const type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type; @@ -60,9 +60,9 @@ export const supportRef = (nodeOrComponent: any): boolean => { return false; } return true; -}; +} -export const supportNodeRef = (node: React.ReactNode): boolean => { +export function supportNodeRef(node: React.ReactNode): boolean { if (!isValidElement(node)) { return false; } @@ -70,5 +70,5 @@ export const supportNodeRef = (node: React.ReactNode): boolean => { return false; } return supportRef(node); -}; +} /* eslint-enable */ From ee537ef083ff78d8562322bc174a298389191b3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=97=E5=98=89=E7=94=B7?= <574980606@qq.com> Date: Mon, 29 Apr 2024 18:03:44 +0800 Subject: [PATCH 3/3] chore: clear --- src/ref.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ref.ts b/src/ref.ts index 89c488f7..e464654f 100644 --- a/src/ref.ts +++ b/src/ref.ts @@ -1,4 +1,4 @@ -/* eslint-disable no-param-reassign,react-hooks/exhaustive-deps */ +/* eslint-disable no-param-reassign */ import type * as React from 'react'; import { isValidElement } from 'react'; import { ForwardRef, isFragment, isMemo } from 'react-is';