From 1baa42bef6be403d9c065a7c3ea49871f1fb8a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AC=A2?= Date: Tue, 15 Jul 2025 10:50:17 +0800 Subject: [PATCH 1/5] feat: Enter keydown Add IME judgment --- src/TextArea.tsx | 4 ++-- tests/index.spec.tsx | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/TextArea.tsx b/src/TextArea.tsx index 67e189b..1085c84 100644 --- a/src/TextArea.tsx +++ b/src/TextArea.tsx @@ -1,9 +1,9 @@ -import clsx from 'classnames'; import { BaseInput } from '@rc-component/input'; import { type HolderRef } from '@rc-component/input/lib/BaseInput'; import useCount from '@rc-component/input/lib/hooks/useCount'; import { resolveOnChange } from '@rc-component/input/lib/utils/commonUtils'; import useMergedState from '@rc-component/util/lib/hooks/useMergedState'; +import clsx from 'classnames'; import type { ReactNode } from 'react'; import React, { useEffect, useImperativeHandle, useRef } from 'react'; import ResizableTextArea from './ResizableTextArea'; @@ -154,7 +154,7 @@ const TextArea = React.forwardRef( }; const handleKeyDown = (e: React.KeyboardEvent) => { - if (e.key === 'Enter' && onPressEnter) { + if (e.key === 'Enter' && onPressEnter && !e.nativeEvent.isComposing) { onPressEnter(e); } onKeyDown?.(e); diff --git a/tests/index.spec.tsx b/tests/index.spec.tsx index ab25053..f06848b 100644 --- a/tests/index.spec.tsx +++ b/tests/index.spec.tsx @@ -381,3 +381,45 @@ describe('TextArea', () => { }); }); }); + +describe.only('TextArea IME behavior', () => { + it('should ignore Enter during composition', () => { + const onPressEnter = jest.fn(); + const { container } = render(