antd中maxlength失效的问题原因

710 阅读1分钟

现象:antd中使用input放入maxlength原生属性失效,没有透传。 结论:透传成功了,但是在更新Vnode的时候删掉了。

过程:首次patch a-input对象会被渲染成

image.png

这个时候maxlength是存在的 但是vue update的时候,(点击输入都会触发)会进入updateAttrs这个方法,这个方法有两个逻辑

  1. 会检查attr有没有变化如果有就重新赋值
  2. 检查旧的attr中undefined的属性,如果不在白名单中就删除

新旧attr是一样的,都是{maxlength:5,maxLength: undefined} 所以第一个逻辑是不执行的,第二个逻辑会去调用removeAttribute(“maxLength”),本意是去删除maxLength,但是maxlength和maxLength在原生dom中是一个东西,就也被删掉了。