Uniapp之uni-ui-扩展组件(1)

这篇具有很好参考价值的文章主要介绍了Uniapp之uni-ui-扩展组件(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uni组件符合easycom规范,HBuilderX 2.5.5起,只需将本组件导入项目,在页面template中即可直接使用,无需在页面中import和注册components

HBuilder插件市场(uni-ui组件库)

uni-ui不支持使用Vue.use()的方式安装
npm安装uni-ui库(vue-cli项目需先安装sass及sass-loader,HBuilder可省略)
安装sass:npm i sass -D 或者 yarn add sass -D
安装sass-loader(使用低于@11.0.0版本,sass-loader@11.0.0不支持vue@2.6.12):npm i sass-loader@10.1.1 -D 或者 yarn add sass-loader@10.1.1 -D
安装uni-ui:npm i @dcloudio/uni-ui 或者 yarn add @dcloudio/uni-ui

script中引用组件:

import {uniBadge} from '@dcloudio/uni-ui'
//import uniBadge from '@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue' //也可使用此方式引入组件
export default {
    components: {uniBadge}
}

在template中使用组件:

<uni-badge text="1"></uni-badge>
<uni-badge text="2" type="success" @click="bindClick"></uni-badge>
<uni-badge text="3" type="primary" :inverted="true"></uni-badge>

CLI引用方式:H5端不支持在main.js中全局注册组件,可使用easyCom的方式引用组件
easyCom:传统vue组件,需要安装、引用、注册三个步骤后才能使用组件,easyCom将其精简为一步,只要组件安装在项目的components目录下,并符合components/组件名称/组件名称.vue目录结构,就可以不用引用、注册,直接在页面中使用
使用npm安装的组件,默认情况下babel-loader会省略所有node-modules中的文件,导致条件编译失效,需要通过配置vue.config.js文件解决:

// 在根目录创建 vue.config.js 文件,并配置如下
module.exports = {
transpileDependencies: ['@dcloudio/uni-ui']
}

使用npm+easycom

使用npm安装好uni-ui之后,需要配置easycom规则,让npm安装的组件支持easycom
打开项目根目录下的pages.json并添加easycom节点

// pages.json

{
    "easycom": {
        "autoscan": true,
        "custom": {
            // uni-ui 规则如下配置
            "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
        }
    },

    // 其他内容
    pages:[
        // ...
    ]
}
  1. uni-badge:数字角标
<uni-badge size="small" :text="100" absolute="rightBottom" type="primary">
    <button type="default">右上</button>
</uni-badge>
<uni-badge text="1"></uni-badge>
<uni-badge text="2" type="purple" @click="bindClick"></uni-badge>
<uni-badge text="3" type="primary" :inverted="true"></uni-badge>

Uniapp之uni-ui-扩展组件(1)
Uniapp之uni-ui-扩展组件(1)

  1. uni-calendar:日历
  • 本组件农历转换使用的js是@1900-2100区间内的公历、农历互转
  • date属性传入的应该是一个String,格式为:2019-06-01
  • 通过 insert 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意
  • 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动
<view>
    <uni-calendar 
    :insert="true"
    :lunar="true" 
    :start-date="'2019-3-2'"
    :end-date="'2019-5-20'"
    @change="change"
     />
</view>

通过方法打开日历

<view>
    <uni-calendar 
    ref="calendar"
    :insert="false"
    @confirm="confirm"
     />
     <button @click="open">打开日历</button>
</view>

export default {
    data() {
        return {};
    },
    methods: {
        open(){
            this.$refs.calendar.open();
        },
        confirm(e) {
            console.log(e);
        }
    }
};

Uniapp之uni-ui-扩展组件(1)
Uniapp之uni-ui-扩展组件(1)

  1. uni-card:卡片
  • 因为平台兼容问题,目前APP-NVUE安卓平台下不支持阴影
<!-- 一般用法 -->
<uni-card title="标题文字" thumbnail="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png" extra="额外信息" note="Tips">
    内容主体,可自定义内容及样式
</uni-card>

<!-- 内容通栏 -->
<uni-card is-full="true" title="DCloud" thumbnail="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png" extra="2018.12.12" >
    <image src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png" style="width: 100%;"></image>
</uni-card>

<!-- 图文卡片模式 -->
<uni-card
    title="标题文字"
    mode="style"
    :is-shadow="true"
    thumbnail="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png"
    extra="Dcloud 2019-05-20 12:32:19"
    note="Tips"
>
        uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可编译到iOS、Android、H5、以及各种小程序等多个平台。即使不跨端,uni-app同时也是更好的小程序开发框架。
</uni-card>

<!-- 标题卡片模式 -->
<uni-card 
    title="Dcloud" 
    mode="title" 
    :is-shadow="true" 
    thumbnail="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png" 
    extra="技术没有上限" 
    note="Tips"
>
    uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可编译到iOS、Android、H5、以及各种小程序等多个平台。即使不跨端,uni-app同时也是更好的小程序开发框架。
</uni-card>

<!-- 自定义底部按钮 -->
<uni-card title="Dcloud" note="true">
    默认内容
    <template v-slot:footer>
        <view class="footer-box">
            <view>喜欢</view>
            <view>评论</view>
            <view>分享</view>
        </view>
    </template>
</uni-card>

Uniapp之uni-ui-扩展组件(1)
Uniapp之uni-ui-扩展组件(1)

  1. uni-collapse:折叠面板
  • 新增show-arrow属性,控制是否显示右侧箭头
  • 组件需要依赖sass插件
  • App端默认关闭组件动画:因为height动画开销比较大,会导致页面卡顿
  • 在小程序端组件内容发生变化,需要手动调用resize()方法,手动更新几点信息,避免出现内容错位
  • 如需自定义组件默认边框颜色等,需使用插槽自定义内容并合理使用bordertitle-border属性
  • 组件支持nvue,需要在manifest.json>app-plus节点下配置"nvueStyleCompiler":"uni-app"
<uni-collapse>
    <uni-collapse-item title="默认开启" :open="true">
        <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item title="折叠内容">
            <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item title="禁用状态" disabled>
        <text>折叠内容</text>
    </uni-collapse-item>
</uni-collapse>

》手风琴效果:
使用accordion属性,open属性则生效在最后一个组件

<uni-collapse accordion>
    <uni-collapse-item title="手风琴效果">
        <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item title="手风琴效果">
            <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item title="禁用状态" disabled>
        <text>折叠内容</text>
    </uni-collapse-item>
</uni-collapse>

》动态设置折叠面板打开状态

  • 使用v-model属性,动态设置面板的显示状态
  • 使用name属性设置每个面板的唯一标识,如不设置使用默认索引,从字符串"0"开始记数
  • v-model属性最好不要和open属性同时使用
  • accordion属性值:
  • ”true“,类型为String
  • ”false“,类型为Array
<uni-collapse v-model="value">
    <uni-collapse-item name="key1" title="默认开启">
        <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item name="key2" title="默认开启">
            <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item name="key3" title="默认不开启">
            <text>折叠内容</text>
    </uni-collapse-item>
</uni-collapse>

export default {
    data(){
        return {
            value:['key1','key2'],
            // 如果设置了 accordion 属性,则使用 string 类型
            // value:'key1'
        }
    }
}

》使用动画
使用show-animation属性开启或关闭面板折叠动画,默认动画开启

<uni-collapse>
    <uni-collapse-item :show-animation="true" title="开启动画">
        <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item :show-animation="true"  title="开启动画">
            <text>折叠内容</text>
    </uni-collapse-item>
    <uni-collapse-item :show-animation="false"  title="不开启动画">
            <text>折叠内容</text>
    </uni-collapse-item>
</uni-collapse>

》配置图片
使用thumb配置图片地址,可在面板左侧显示一个图片

<uni-collapse>
    <uni-collapse-item title="标题文字"
        thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png">
        <view class="content">
            <text class="text">折叠内容主体,可自定义内容及样式</text>
        </view>
    </uni-collapse-item>
</uni-collapse>

》自定义插槽
如果需要自定义面板显示,可以使用title插槽达成完全自定义
使用uni-list的列表示例,需引入uni-list组件
在折叠面板组件中使用list时,在App-Nvue下不要使用uni-list-item,会导致组件无法正常显示,其他平台不做限制
在默认插槽里使用uni-list组件与上方示例一样,直接写在默认插槽即可

<uni-collapse>
    <!-- 因为list默认带一条分隔线,所以使用 titleBorder="none" 取消面板的分隔线 -->
    <uni-collapse-item title-border="none" :border="false">
        <template v-slot:title>
            <uni-list>
                <uni-list-item title="标题使用自定义标题插槽" :show-extra-icon="true" :extra-icon="extraIcon">
                </uni-list-item>
            </uni-list>
        </template>
        <view class="content">
            <text class="text">折叠内容主体,可自定义内容及样式</text>
        </view>
    </uni-collapse-item>
</uni-collapse>

Uniapp之uni-ui-扩展组件(1)

Uniapp之uni-ui-扩展组件(1)

resize():更新当前列表高度

  • 解决动态添加数据,带动画的折叠面板高度不更新的问题
  • 需要在数据渲染完毕之后使用resize方法=》推荐在this.$nextTick()中使用
  • 当前只有小程序端需要调用此方法,H5\App端已经做了处理,不需要手动更新高度
<view>
  <uni-collapse ref="collapse" v-model="value">
      <uni-collapse-item title="默认开启" >
          <view class="content">
              <text class="text">{{content}}</text>
          </view>
      </uni-collapse-item>
      <uni-collapse-item title="折叠内容">
          <view class="content">
              <text class="text">折叠内容主体,这是一段比较长内容。默认折叠主要内容,只显示当前项标题。点击标题展开,才能看到这段文字。再次点击标题,折叠内容。</text>
          </view>
      </uni-collapse-item>
  </uni-collapse>
  <button class="button" type="primary" @click="add">动态修改内容</button>
</view>

export default {
data() {
  return {
      value:['0'],
      content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
  }
},
methods: {
  add() {
      if (this.content.length > 35) {
          this.content = '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。'
      } else {
          this.content = '折叠内容主体,这是一段比较长内容。通过点击按钮修改后内容后,使组件高度发生变化,在次点击按钮恢复之前的内容和高度。'
      }
      // TODO 小程序中不支持自动更新 ,需要手动resize 更新组件高度
      // #ifdef MP
      this.$nextTick(() => {
          this.$refs.collapse.resize()
      })
      // #endif
  }
}
}

Uniapp之uni-ui-扩展组件(1)

  1. uni-combox:组合框
  • 可以同时选择和输入的表单项
<uni-combox label="所在城市" :candidates="candidates" placeholder="请选择所在城市" v-model="city"></uni-combox>

Uniapp之uni-ui-扩展组件(1)
Uniapp之uni-ui-扩展组件(1)

  1. uni-countdown:倒计时
<!-- 一般用法 -->
<uni-countdown :day="1" :hour="1" :minute="12" :second="40"></uni-countdown>

<!-- 不显示天数 -->
<uni-countdown :show-day="false" :hour="12" :minute="12" :second="12"></uni-countdown>

<!-- 修改颜色 -->
<uni-countdown color="#FFFFFF" background-color="#00B26A" border-color="#00B26A" :day="1" :hour="2" :minute="30" :second="0"></uni-countdown>

Uniapp之uni-ui-扩展组件(1)
Uniapp之uni-ui-扩展组件(1)

  1. uni-data-checkbox:数据选择器
  • 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容
  • 自动的表单校验:组件绑定了data,且符合uni-forms组件的表单校验规范,搭配使用会自动实现表单校验
  • 本组件合并了单选和多选
  • uniCloun开发中,DB Schema中配置了enum枚举等类型后,在web控制台的自动生成表单功能中,会自动生成uni-data-checkbox组件并绑定好data
  • 本组件需依赖sass插件,需自行安装
  • 本组件为数据驱动,目的是快速投入使用,只可通过style覆盖有限样式,不支持自定义更多样式
  • 组件支持nvue,需要在manifest.json>app-plus节点下配置"nvueStyleCompiler":"uni-app"

设置localdata属性后,组件会通过数据渲染出对应的内容,默认显示的是单选框
:multiple="false"时(单选),value/v-model的值是String|Number类型

<template>
    <view>
        <uni-data-checkbox v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
    </view>
</template>


export default {
    data() { 
        return {
            value: 0,
            range: [{"value": 0,"text": "篮球"    },{"value": 1,"text": "足球"},{"value": 2,"text": "游泳"}]
        }
    },
    methods: {
        change(e){
            console.log('e:',e);
        }
    }
}

》多选框

  • 设置multiple属性,组件显示为多选框
  • :multiple="true"时(多选),value/v-model的值是Array类型
<template>
    <view>
        <uni-data-checkbox multiple v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
    </view>
</template>

export default {
    data() { 
        return {
            value: [0,2],
            range: [{"value": 0,"text": "篮球"    },{"value": 1,"text": "足球"},{"value": 2,"text": "游泳"}]
        }
    },
    methods: {
        change(e){
            console.log('e:',e);
        }
    }
}

》设置最大最小值

  • :multiple="true"时(多选),可以设置minmax
  • 如果选中个数小于min属性设置的值,则选择内容将不可取消,只有当选中个数大于等于min且小于`max``时,才可取消选中
  • 如果选中个数大于等于max属性设置的值,那么其他未选中内容将不可选
<template>
    <view>
        <uni-data-checkbox min="1" max="2" multiple v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
    </view>
</template>

export default {
    data() { 
        return {
            value: [0,2],
            range: [{"value": 0,"text": "篮球"    },{"value": 1,"text": "足球"},{"value": 2,"text": "游泳"}]
        }
    },
    methods: {
        change(e){
            console.log('e:',e);
        }
    }
}

》设置禁用

  • 禁用需要在localdata属性的数据源中添加disable属性
<template>
    <view>
        <uni-data-checkbox v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
    </view>
</template>

export default {
    data() { 
        return {
            value: 0,
            range: [{
                    "value": 0,
                    "text": "篮球"
                },
                {
                    "value": 1,
                    "text": "足球",
                    // 禁用当前项
                    "disable":true
                },
                {
                    "value": 2,
                    "text": "游泳"
                }
            ]
        }
    },
    methods: {
        change(e){
            console.log('e:',e);
        }
    }
}

》自定义选中颜色

  • 设置selectedColor属性,可以修改组件选中后的图标及边框颜色
  • 设置selectedColor属性,可以修改组件选中后的文字颜色,如不填写默认同selectedColor属性,mode属性为tag时,默认为白色
<template>
    <view>
        <uni-data-checkbox selectedColor="red" selectedTextColor="red" multiple v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
    </view>
</template>

export default {
    data() { 
        return {
            value: [0,2],
            range: [{"value": 0,"text": "篮球"    },{"value": 1,"text": "足球"},{"value": 2,"text": "游泳"}]
        }
    },
    methods: {
        change(e){
            console.log('e:',e);
        }
    }
}

》更多模式

  • 设置mode属性,可以设置更多显示样式,目前内置样式有四种default/list/button/tag
  • 如果需要禁用某项,需要在localdata属性的数据源中添加disable属性
<template>
    <view>
        <!-- 默认 default -->
        <uni-data-checkbox v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
        <!-- 列表 list ,显示左侧图标 -->
        <uni-data-checkbox mode="list" icon="left" v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
        <!-- 列表 list ,显示右侧图标 -->
        <uni-data-checkbox mode="list" icon="right" v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
        <!-- 按钮 button -->
        <uni-data-checkbox mode="button" v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
        <!-- 标签 tag -->
        <uni-data-checkbox mode="tag" v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
    </view>
</template>

export default {
    data() { 
        return {
            value: 0,
            range: [{"value": 0,"text": "篮球"    },{"value": 1,"text": "足球"},{"value": 2,"text": "游泳"}]
        }
    },
    methods: {
        change(e){
            console.log('e:',e);
        }
    }
}

Uniapp之uni-ui-扩展组件(1)
Uniapp之uni-ui-扩展组件(1)
Uniapp之uni-ui-扩展组件(1)文章来源地址https://www.toymoban.com/news/detail-401586.html

到了这里,关于Uniapp之uni-ui-扩展组件(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【uniapp】在微信小程序中修改uni-ui组件样式不生效的解决方案

    在使用uniapp框架开发微信小程序时,使用到了uni-ui的uni-table组件。由于需要修改表头的背景色,于是乎在微信开发工具中使用调试工具审查元素获取其class名: 尝试直接在页面中修改样式: 结果无效。于是尝试使用深度选择器 依然无效。然后查询微信平台官方开发文档得知

    2024年02月02日
    浏览(77)
  • uniapp+vue3+vite+ts搭建项目引入uni-ui和uviewPlus组件库

    一、创建项目架构 首先使用官方提供的脚手架创建一个项目 在这里插入代码片 ,这里我创建的 vue3 + vite + ts 的项目: (如命令行创建失败,请直接访问 gitee下载模板) 二、下载依赖 启动 三、下载安装包 引入uni-ui src/package.json 文件配置easycom模式 引入uview-plus main.ts配置 u

    2024年02月13日
    浏览(63)
  • 【uniapp】小程序开发:2 安装uni-ui组件库、使用pinia状态管理、自定义http请求

    1、安装 2、配置组件自动导入 使用 npm 安装好 uni-ui 之后,需要配置 easycom 规则,让 npm 安装的组件支持 easycom 打开项目根目录下的 pages.json 并添加 easycom 节点: 3、安装插件,实现uni-ui组件的类型提示 安装完成后,在 tsconfig.json 中增加配置项 4、测试使用 随便复制一个组件在

    2024年02月08日
    浏览(60)
  • 使用uni-ui 实现下拉搜索框(uniapp+uni-ui+vue3 开发微信小程序)

    需求:输入框中输入内容--远端搜索匹配的选项--展示选项(可点击选择选项) 代码实现 htm:(一个输入框input + list) js: css

    2024年01月24日
    浏览(54)
  • uni-ui组件库uni-icons不显示

    按照官方文档用yarn引用了uni-ui组件库并且在pages.json和vue.config.js中配置了相关的内容后使用uni-icon效果如下:   使用uni-icons的地方图标都未显示成功 1-按照 项目名称node_modules@dcloudiouni-uilibuni-icons目录找到uni-icons目录 2-将uni-icons目录放到src目录下的components目录下 3-在pages

    2024年02月15日
    浏览(63)
  • uni-app自定义组件及拓展(uni-ui)组件的使用

    UniApp 是一个基于 Vue.js 的跨平台应用框架,可以用来开发同时运行在多个平台(如微信小程序、支付宝小程序、App等)的应用程序。在 UniApp 中,组件的使用与 Vue.js 中的组件使用基本类似,但需要考虑跨平台兼容性。 1. 创建组件文件 在 UniApp 项目中创建一个新的组件,通常

    2024年04月29日
    浏览(55)
  • uniapp collapse动态生成多个折叠面板手动展开收起(包括uni-ui版)

    官方文档没有暴露出相关api,那就看看组件源码。 以下示例均通过  vue-cli  创建的  uni-app  h5 项目 源码 node_modulesuview-uicomponentsu-collapse-itemu-collapse-item.vue 这个方法是用来改变折叠面板子组件收起还是展开的,根据改变 isShow 的值来实现 方法 源码 node_modules@dcloudiouni-ui

    2024年02月06日
    浏览(67)
  • uni-ui 中 uni-file-picker组件限制用户上传大小超过大小自动去除

    uni-ui 中 uni-file-picker组件限制用户上传大小超过大小自动去除 找到该组件位置打开uni-file-picker 在props中添加自己想起的名字绑定限制大小 找到chooseFileCallback方法插入代码: 其他页面调用即可

    2024年01月15日
    浏览(64)
  • uni-app开发使用uni-ui组件uni-data-checkbox编译微信小程序报错

    uniapp开发使用uni-ui控件uni-data-checkbox,编译成微信小程序报错VM50 WAService.js:1 TypeError: Cannot read property \\\'length\\\' of undefined,并且页面无法显示。  解决方法: 1、 HBuilder X 编译器下载 sass 或更新 HBuilder X 版本 2、更新uni-ui组件库 3、如果不使用uniCloud就注释uni-data-checkbox.vue文件中的

    2024年02月06日
    浏览(74)
  • uni-app uni-ui 微信小程序 uni-datetime-picker 时间选择组件设置start和end属性,实现时间选择限制

     效果如图,先选择开始日期,完成日期需要在开始日期之后,先选择完成日期,开始日期需要在完成日期之前 需要用到uni-datetime-picker官方的三个属性  代码如下 这样一个能够限制选定范围的组件就ok了!    

    2024年02月11日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包