最近本山人在项目的开发过程中遇到这么一个问题:
在列表中嵌入antd
的Input输入框,切换到微软输入法输入时,就不能成功输入中文字符,然而搜狗输入法又是正常的。
研究一番,发现是input的value这王八蛋在搞事情,每次输入都会调用onChange
事件。而搜狗输入法和微软的输入法对onChange
调用机制不同,所以就会出现这种情况(至于有何不同,在这里就不做陈述了,麻烦各位自行问度娘)。
解决方法:对input框进行二次封装,对onChange
调用机制进行处理。
话不多说,直接撸代码才是王道(这里封装的比较简单,因为本山人的项目对input框的需求不多,各位看官可自行完善)
import React, {
Component, createRef } from 'react';
import PropTypes from 'prop-types';
class ControlledInput extends Component {
inputRef = createRef();
isOnComposition = false;
componentDidMount() {
this.setInputValue(