这个跟 Antd <Input /> 没有关系,换成 <input /> 光标也会跳都最后。
Solution 1: Input 非受控
使用 defaultValue 属性,这样 Input 就不会因为 model 的改变而刷新。
对于 pop up dialog,非受控可以接受,相当于给页面的初始值。
Solution 2: 使用中间 state (掩耳盗铃)
引入中间 state,使用 useEffect 来更新 model。本质也是非受控,因为 model 的改变,不会再次更新中间的 state。
export const useModelState = <T, >( value: T, setValue?: Dispatch<SetStateAction<T>>, ): [T, Dispatch<SetStateAction<T>>] => { const [state, setState] = useState<T>(value); useEffect(() => { setValue?.(state); }, [state]); return [state, setState]; }