如何用Svelte移除a标签的href属性?href={false}写法是否可行?
Svelte 3.44.2版本
href={false}无法移除属性问题说明 你的理解存在部分偏差,该写法不生效是Svelte 3.x版本的属性绑定规则导致的。
Svelte的属性绑定逻辑中,「绑定值为falsy时自动移除属性」的规则仅适用于disabled、checked、readonly这类原生布尔属性。对于href这类字符串类型的常规属性:
- 传入
false时,Svelte 3.x会将其序列化为字符串"false"作为属性值,不会移除属性 - 只有传入
null或undefined时,才会直接移除该属性
对应的解决方法如下:
如果需要在条件不满足时完全移除href属性,将绑定值替换为null或undefined即可,示例代码:
<!-- 该写法在3.44.2版本中可以正常移除href属性 --> <a href={undefined}></a> <!-- 动态布尔控制示例 --> <a href={needRenderHref ? '/target/path' : null}></a>
内容的提问来源于stack exchange,提问作者Fred Hors
相关产品推荐
相关产品推荐

