如何利用vue封装一个可展开/收起的组件

发布于 2022-09-11 23:21:13 字数 178 浏览 17 评论 0

最近有个需求就是用vue封装一个类似element 的展开/收起的组件,像下图这种
element.gif
自己可以写demo,但是不会封装,望前辈们指教指教,如果能贴个示例代码的话,万分感谢~!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我三岁 2022-09-18 23:21:13

笔试题还是猎头哦,一般人也不会有这种需求。。。
个人拙见:
把几个常用的功能留作 prop 嘛,比如展开按钮的文本、比如你这个 gif 里面,hover 的时候要不要动画啥的
再者就是把需要折叠的和不需要折叠的放到单独的两个具名插槽里,也方便维护
最后封装成插件嘛 https://cn.vuejs.org/v2/guide...

奢华的一滴泪 2022-09-18 23:21:13

利用slot插槽,把你需要隐藏的内容放在插槽里,通过v-show控制那个插槽的显隐

溇涏 2022-09-18 23:21:13

楼上已经回答了就是用插槽

Vue.component('upDown',{
    template:'<div><transition name="fade"><div v-show="status"><slot></slot></div></transition><button @click="toggle">{{status?"收起":"展开"}}</button></div>',
    data(){
        return {
            status:false
        }
    },
    methods:{
        toggle(){
            this.status = !this.status
        }
    }
})
<upDown>这是内容</upDown>
我爱人 2022-09-18 23:21:13

这个就是给简单的 v-show 控制组件展示和隐藏啊....
你写HTML的时候把节点想成成默认展开的形式去写就好
完成之后在需要隐藏的地方加个 v-show 就好
要动画效果加个 translation 并且自己去手写动画或是引用库什么的

唯一难点的可能就是实时检测prop的变化(但是这个例子有很多)

自用的话也不用考虑太多
满足自己需求即可

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文