这是 element-ui 的 bug 吗?-灵析社区

我头像最美

`element-ui` `InfiniteScroll` 在线地址 [https://codesandbox.io/p/sandbox/hopeful-knuth-twdttl?file=%2...](https://link.segmentfault.com/?enc=EN0SZmEQyz8ylKjdXO73Uw%3D%3D.ZUXJK0f17wB0QTgrsWL%2FchFs8%2FbW0Amfc7BhB8LPY4454QCmeBey24FnVhri4Zuyag20V7odxUJgc8YUo1OdAA59tDjAlcX%2BSGBOvPOra6k727m4q%2BVrx8%2Fn6MPPQRjP) 我的使用方式 v-infinite-scroll="load" :infinite-scroll-immediate="false" 但是还是触发了 `load` 方法 默默打开 `element-ui` 源码调试了一下 `packages/infinite-scroll/src/main.js` * line:69 let value = el.getAttribute(`infinite-scroll-${key}`); 发现这个 value 永远都是 `true`,但是我明明传递的是 `false` 啊 后来看了 `vue` 源码里面 对 `dom` 的 `attribute` 有这样一段处理 `src/platforms/web/runtime/modules/attrs.js` * line:68 if (isFalsyAttrValue(value)) { el.removeAttribute(key) } else { ... } `false` 的值会被移除掉 导致 `element-ui` 获取到的 `value` 永远是 `null` 就取了默认值 `true` 请教一下各位大佬,这是 `element-ui` 的 `bug` 还是我哪里处理的有问题? 希望能解释一下这个问题

阅读量:112

点赞量:0

问AI
这里有几个因素: 1."InfiniteScroll"是一个指令,指令可以附加到任何元素上,指令可以获取绑定值的具体类型。 2."vue"里不显示定义成"props"的属性都会成为元素的"attribute"附加到元素上,而原生DOM的"attribute"都是字符,不存在布尔、数值这些类型,所以绑定属性【不是props】的值都只能是字符,如果你用"v-bind"绑定属性那么"vue"也会将其转成字符附加到DOM上【除开"false"】 3."InfiniteScroll"拓展的那些属性其实是DOM的"attribute",并非"prop",element-ui文档里并没有对这个进行说明而且还显眼的写上了类型,大多数第一直觉都会将其当做"prop"来传递,出问题了第一时间可能也不容易联想到第2点,文档里最好是说明是字符"'false'|'true'"这样更好一点 综合以上原因,它不是bug,但是非要甩锅的话,锅在"element-ui"吧我觉得