Skip to content

🤡我把 react 放心里,它把我踹沟里

使用antd Table组件

重构代码的时候,需要将一个使用 map 遍历的 Row 组件转化成一个 Table 组件,然后就开始了悲催的踩坑之旅。。。

Table中嵌套Input组件,每次输入一个字符后就失焦

分析原因: 首先嵌套Input组件,一般是在Column中使用render方法,因为Input组件是受控组件,所以每次输入一个字符后就会触发Input组件的onChange事件,这样会导致Table组件重新渲染,从而导致Input组件失焦。

解决方法: 当出现这个问题时,我去搜索了一下解决办法

  1. 将Input组件改为非受控组件,这样就不会触发Input组件的onChange事件,从而不会导致Table组件重新渲染。(未尝试)
  2. 对column中的key进行修改,每次输入一个字符后,key的值都会发生变化,这样就会导致Table组件重新渲染。所以需要将key的值改为一个固定的值,这样就不会导致Table组件重新渲染。(但是由于我在项目中设置了dataIndex,所以这种方法是否起作用需要打个?但是在使用map遍历的时候,将index设为key应该挺好用)
  3. 设置autoFocus自动聚焦(别用,确实可以达到聚焦的目的,但是用的时候卡死了,而且输入中文时根本识别不了,无法解决这个问题)
  4. 不用onChange事件,把触发放在输入结束之后,手动点击按钮或者失去焦点后,我使用的是onBlur事件,让输入后失去焦点后在触发事件。(然后发现非常的好用哈哈哈)

上次更新于: