IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> uniapp之自定义Collapse 折叠面板 (主要让uView的源码适配多端) -> 正文阅读

[移动开发]uniapp之自定义Collapse 折叠面板 (主要让uView的源码适配多端)

今天使用uView插件的时候发现Collapse 折叠面板有点问题,主要是小程序了不能自定义标题,图标等,没错又是小程序!每次都是小程序,咱就说一套代码适配多端真的很多坑,尤其是小程序。 好了不废话了,先证明一下官网的确指明小程序不可以自定义使用插槽。如图

?官网Collapse 折叠面板 | uView 2.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架

因为研究过uView的源码,有点熟悉(这里也推荐大家去看一下,不仅可以吸取一下解决方案,对组件化开发也有帮助,最重要的是对于本菜鸟来说这个源码相对简单,不知道有没有童鞋去看过element-plus源码,整个过程就是从打开到放弃,超出本人水平了,不过有机会我还是会看的,优秀的代码的确值得学习哈哈哈)

一:源码位置

?demo1那里就是自己项目的命名(这波属于保姆级手摸手讲解了~~~)

二:分析源码

?获取两个重要信息1是源码直接用#ifndef排除了微信小程序使用插槽的可能,2是u-collapse-item中的插槽来源是u-cell组件的(这个很重要,下面有的内容还需要去u-cell了解)

三:解决方案

既然源码排除了在小程序使用插槽的可能,我们就加上这种可能

//源码修改后 ifndef删掉
<template slot="title">
        <slot name="title1">{{title}}</slot>			
</template>
<template slot="icon" >
        <slot name="icon1"></slot>
</template>
<template slot="value" >
        <slot name="value1"></slot>
</template>

<template slot="right-icon">
        <slot name="right-icon1" v-if="$slots['right-icon1']">
        </slot>
        <u-icon name="arrow-right"  v-else></u-icon>
</template>

看到源码有写到小程序不支持<slot name="title" slot="title" />的写法,所以作者才放弃让小程序使用插槽吧,我试了一下只要name="title"和slot="title"的值不一样就行了,所以我选择用title1,icon1,value1,right-icon1作为我要自定义时的命名插槽,那title,icon,value,right-icon是谁呢,很显然是u-cell的命名插槽,去看了一下u-cell关于这个四个插槽的源码,像文字类的title,value很好解决,icon本来u-collapse-item就默认没有只用考虑自定义就得行了,最难的就是right-icon,又要考虑自定义,又要考虑啥也不传使用默认的图标,试了很久都不能两者兼得(这或许是作者考虑组件稳定性而舍弃小程序使用插槽的又一可能吧)

?

看了下u-cell关于right-icon插槽的源码,作者做了个判断有$slots['right-icon']则显示自定义插槽,无则显示默认u-icon。我们在改的时候也根据这个思路改,所以也选择用v-if="$slots['right-icon1']"修改

使用方式

?贴一下代码

//修改源码
<u-cell
    :title="title"
    :value="value"
    :label="label"
    :icon="icon"
    :isLink="isLink"
    :clickable="clickable"
    :border="parentData.border && showBorder"
    @click="clickHandler"
    :arrowDirection="expanded ? 'up' : 'down'"
    :disabled="disabled"
>

    <template slot="title">
            <slot name="title1">{{title}}</slot>

    </template>
    <template slot="icon" >
            <slot name="icon1"></slot>
    </template>
    <template slot="value" >
            <slot name="value1"></slot>
    </template>

    <template slot="right-icon">
            <slot name="right-icon1" v-if="$slots['right-icon1']">
            </slot>
            <u-icon name="arrow-right"  v-else></u-icon>
    </template>
</u-cell>
//使用
<u-collapse accordion>

        <u-collapse-item title="众多利器">
                <text slot="title1" class="u-page__item__title__slot-title">文档指南</text>
                <text slot="value1" class="u-page__item__title__slot-title">自定义内容</text>
                <u-icon name="tags-fill" size="25" slot="icon1"></u-icon>
                <u-icon name="tags-fill" size="25" slot="right-icon1"></u-icon>

                <view class="u-collapse-content">众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨</view>
        </u-collapse-item>
</u-collapse>

本人验证过修改后可适配多端

总结

uniapp虽然一套代码适配多端的确坑很多,好在相关ui组件源码比较容易阅读,所以自己改改说不定能适配上自己的业务

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:26:57  更:2022-10-22 21:28:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 2:53:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码