现象:antd中使用input放入maxlength原生属性失效,没有透传。 结论:透传成功了,但是在更新Vnode的时候删掉了。
过程:首次patch a-input对象会被渲染成
这个时候maxlength是存在的 但是vue update的时候,(点击输入都会触发)会进入updateAttrs这个方法,这个方法有两个逻辑
- 会检查attr有没有变化如果有就重新赋值
- 检查旧的attr中undefined的属性,如果不在白名单中就删除
新旧attr是一样的,都是{maxlength:5,maxLength: undefined} 所以第一个逻辑是不执行的,第二个逻辑会去调用removeAttribute(“maxLength”),本意是去删除maxLength,但是maxlength和maxLength在原生dom中是一个东西,就也被删掉了。