浏览代码

fix: prevent onChange during IME composition (#10059)

tags/0.11.0
Fog3211 1年前
父节点
当前提交
18424dd82f
没有帐户链接到提交者的电子邮件
共有 1 个文件被更改,包括 11 次插入2 次删除
  1. 11
    2
      web/app/components/base/search-input/index.tsx

+ 11
- 2
web/app/components/base/search-input/index.tsx 查看文件

@@ -1,5 +1,5 @@
import type { FC } from 'react'
import { useState } from 'react'
import { useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { RiSearchLine } from '@remixicon/react'
import cn from '@/utils/classnames'
@@ -12,6 +12,7 @@ type SearchInputProps = {
onChange: (v: string) => void
white?: boolean
}

const SearchInput: FC<SearchInputProps> = ({
placeholder,
className,
@@ -21,6 +22,7 @@ const SearchInput: FC<SearchInputProps> = ({
}) => {
const { t } = useTranslation()
const [focus, setFocus] = useState<boolean>(false)
const isComposing = useRef<boolean>(false)

return (
<div className={cn(
@@ -45,7 +47,14 @@ const SearchInput: FC<SearchInputProps> = ({
placeholder={placeholder || t('common.operation.search')!}
value={value}
onChange={(e) => {
onChange(e.target.value)
if (!isComposing.current)
onChange(e.target.value)
}}
onCompositionStart={() => {
isComposing.current = true
}}
onCompositionEnd={() => {
isComposing.current = false
}}
onFocus={() => setFocus(true)}
onBlur={() => setFocus(false)}

正在加载...
取消
保存