这一章为什么不直接使用目录和书签组件,而是用component的is属性?有什么区别吗?
来源:5-7 目录功能实现(Tab选项切换和搜索效果)

码代码
2019-11-24
输入正文
写回答
1回答
-
你好,这里主要演示 component 的动态组件特性,在这个场景下动态组件和 v-if 做一个判断差别不大,但是试想这样一个场景:
我需要根据一个参数判断展示 a 标签还是 router-link 标签时,你会如何实现呢(两者传入的参数几乎一样),这是用动态组件就可以节约大量代码,实现如下,首先定义动态组件:
<component v-bind="linkProps(to)"> <slot /> </component>
定义动态组件绑定的参数:
linkProps(url) { if (isExternal(url)) { return { is: 'a', href: url, target: '_blank', rel: 'noopener' } } return { is: 'router-link', to: url } }
这样做的好处是可以让代码逻辑更加精炼,同时避免在 DOM 中暴露判断逻辑,如果存在更多组件切换时,动态组件也可以游刃有余
112019-11-25
相似问题