【uniapp】小程序开发7:自定义组件、自动注册组件

news2024/12/25 8:41:51

一、自定义轮播图组件、自动注册

以首页轮播图组件为例。

1、创建组件文件src/components/my-swipper.vue

代码如下:

<template>
	<view>
		<view class="uni-margin-wrap">
			<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
				:duration="duration">
				<swiper-item>
					<view class="swiper-item uni-bg-red">A</view>
				</swiper-item>
				<swiper-item>
					<view class="swiper-item uni-bg-green">B</view>
				</swiper-item>
				<swiper-item>
					<view class="swiper-item uni-bg-blue">C</view>
				</swiper-item>
			</swiper>
		</view>

	</view>
</template>

<script lang="ts">
export default {
    data() {
        return {
            background: ['color1', 'color2', 'color3'],
            indicatorDots: true,
            autoplay: true,
            interval: 2000,
            duration: 500
        }
    },
    methods: {
        changeIndicatorDots(e) {
            this.indicatorDots = !this.indicatorDots
        },
        changeAutoplay(e) {
            this.autoplay = !this.autoplay
        },
        intervalChange(e) {
            this.interval = e.target.value
        },
        durationChange(e) {
            this.duration = e.target.value
        }
    }
}
</script>

<style>
	.uni-margin-wrap {
		width: 690rpx;
		width: 100%;
	}
	.swiper {
		height: 300rpx;
	}
	.swiper-item {
		display: block;
		height: 300rpx;
		line-height: 300rpx;
		text-align: center;
    color: white;
	}
  .uni-bg-red{
    background-color: red;
  }
  .uni-bg-green{
    background-color: green;
  }
  .uni-bg-blue{
    background-color: blue;
  }
</style>

2、在pages.json中配置自动注册,添加配置代码"^my-(.*)": "@/components/my-$1.vue"

{
	"easycom": {
		"autoscan": true,
		"custom": {
			// uni-ui 规则如下配置
			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue",
			// 自定义组件,配置自动导入
			"^my-(.*)": "@/components/my-$1.vue"
		}
	},
    // ... //	
}

3、在页面中直接使用<my-navbar/>

不用再手动import

<template>
  <my-navbar/>
  <view class="content">
    <image mode="aspectFill" class="logo" src="/static/logo.png" />
    <view class="text-area">
      <text class="title">{{ title }}</text>
    </view>
  </view>
</template>

4、配置ts类型提示

在组件目录components创建文件components.d.ts,内容如下,

import MySwipper from "./my-swipper.vue";
declare module '@vue/runtime-core' {
    export interface GlobalComponents {
        MySwipper: typeof MySwipper,
    }
}

在这里插入图片描述

二、增加轮播图指示点组件

uni-swiper-dot组件在swiper 基础上面增加了丰富的指示点样式。

UniHelper为我们提供了各种组件的类型声明,可以直接使用。如下面change事件中的ev参数 ev: UniHelper.SwiperOnChangeEvent

使用轮播图指示点组件需要把swiper组件的默认指示点(indicator-dots)设置为false,否则会出现两层指示点。

核心参数

  • mode:指示点的类型,可选值:default 、round 、nav 、 indexes
  • current:当前指示点索引,必须是通过 swiper 的 change 事件获取到的 e.detail.current
  • dotsStyles:指示点样式
  • info:轮播图的数据,通过数组长度决定指示点个数
  • field:mode 为 nav 时,显示的内容字段(mode = nav 时必填)
<template>
	<view>
		<view class="uni-margin-wrap">
			<uni-swiper-dot class="uni-swiper-dot-box" @clickItem=clickItem :info="info" :current="current" :mode="mode"
				:dots-styles="dotsStyles" field="content">
				<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
					:current="swiperDotIndex" :duration="duration" @change="onchange">
					<swiper-item v-for="(item, index) in info">
						<view :class="'swiper-item ' + item.colorClass">{{ item.content }}</view>
					</swiper-item>
				</swiper>
			</uni-swiper-dot>
		</view>
	</view>
</template>
<script lang="ts">
export default {
	data() {
		return {
			indicatorDots: false,
			autoplay: true,
			interval: 2000,
			duration: 500,
			info: [{
				colorClass: 'uni-bg-red',
				content: '内容 A'
			},
			{
				colorClass: 'uni-bg-green',
				content: '内容 B'
			},
			{
				colorClass: 'uni-bg-blue',
				content: '内容 C'
			}
			],
			modeIndex: -1,
			styleIndex: -1,
			current: 0,
			mode: 'default',//default, dot, round, nav, indexes
			dotsStyles: {
				backgroundColor: 'rgba(83, 200, 249,0.3)',
				border: '1px rgba(83, 200, 249,0.3) solid',
				color: '#fff',
				selectedBackgroundColor: 'rgba(83, 200, 249,0.9)',
				selectedBorder: '1px rgba(83, 200, 249,0.9) solid'
			},
			swiperDotIndex: 0
		}
	},
	methods: {
		onchange(ev: UniHelper.SwiperOnChangeEvent) {
			this.current = ev.detail.current
		},
		clickItem(e: number) {
			this.swiperDotIndex = e
		}
	}
}
</script>

在这里插入图片描述

参考

  • https://uniapp.dcloud.net.cn/component/uniui/uni-swiper-dot.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何解决数据倾斜

星光下的赶路人star的个人主页 臣书刷字墨淋漓&#xff0c;舒卷烟云势最奇 文章目录 1、数据倾斜的现象2、解决办法2.1 单表聚合&#xff08;group bysum()&#xff09;2.2 多表关联&#xff08;join&#xff09; 3、倾斜原因 1、数据倾斜的现象 部分Reduce一直运行&#xff0…

五个步骤轻松搞定软件开发流程

互联网在当今社会非常普遍&#xff0c;日常生活中很多东西都离不开互联网&#xff0c;应用软件是互联网必不可少的载体和终端。因此&#xff0c;软件是互联网中不可缺少的关键因素。软件开发已经成为许多企业和企业家非常重要的布局。在软件开发之前&#xff0c;我们应该了解软…

如何利用GPT4 和 ChatGPT 搞科研?

灵魂发问 GPT科研中没有那么神&#xff1f; GPT账号不能轻松使用&#xff1f; GPT怎样才融合到我的科研中&#xff1f; 别人用的非常酷&#xff0c;为什么我用的不行&#xff1f; 2023年我们进入了AI2.0时代。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff…

短视频矩阵系统源码/技术应用搭建

短视频矩阵系统开发围绕的开发核心维度&#xff1a; 1. 多账号原理开发维度 适用于多平台多账号管理&#xff0c;支持不同类型账号矩阵通过工具实现统一便捷式管理。&#xff08;企业号&#xff0c;员工号&#xff0c;个人号&#xff09; 2. 账号矩阵内容开发维护 利用账号矩…

用Python快速生成报表之一

一、前言 昨天两年多没有见过面的大Boss在澳洲给我老板和我开视频会议&#xff0c;他要求我们做到当他提出需要什么数据的时候&#xff0c;技术这边能够在5分钟之内快速给到他 &#xff0c;我心里有一万匹马奔腾而过&#xff0c;Java在处理这些事情上效率比较低&#xff0c;ph…

个人的微信公众号如何变更主体?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;长期以来&#xff0c;由于部分公众号在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者公众号主体发生合并、分立或业务调整等现实状况&#xff0c;在公众号登记主体不能对应实际运营人的情况下&#xff0…

【2024秋招】小米中间件后端开发一面2023-9-13-base武汉

1 自我介绍 2 快手实习 2.1 讲讲你写的curd启动器&#xff0c;做了哪些工作呢 答&#xff1a; 2.2 网上也有一些开源的curd代码生成器&#xff0c;你为什么需要自研呢&#xff08;重要&#xff09; 答&#xff1a; &#xff08;1&#xff09;这个必须得自研&#xff0c;因…

Leetcode—323.无向图中连通分量的数目【中等】Plus

2023每日刷题&#xff08;七&#xff09; Leetcode—323.无向图中连通分量的数目 并查集思路实现代码 static int father[2010] {0};int Find(int x) {if(x ! father[x]) {father[x] Find(father[x]);}return father[x]; }void Union(int x, int y) {int a Find(x);int b …

使用R和curl库编写一段爬虫代码

以下是一个使用R和curl库的下载器程序&#xff0c;用于下载企鹅网站的内容。此程序使用了duoip.cn/get_proxy的代码。 # 引入必要的库 library(curl) library(jsonlite)# 获取爬虫ip proxy_url <- "https://www.duoip.cn/get_proxy" proxy_response <- curl_fe…

Fortify-设置中文语言

文章目录 运行scapostinstall.cmd设置Options 运行scapostinstall.cmd 设置Options 击Update Secutiry Content-zh_CN等待更新成中文即可 重启fortify

【Docker】Dockerfile常用指令

参考官方文档&#xff1a;https://docs.docker.com/engine/reference/builder/ Dockerfile常用指令 指令说明from基础镜像&#xff0c;当前镜像基于&#xff08;依赖&#xff09;哪个镜像maintainer镜像的维护者和邮箱run镜像构建时需要执行的命令workdir镜像的工作目录expos…

leetcode:292. Nim 游戏(数学推理)

一、题目 函数原型&#xff1a;bool canWinNim(int n) 二、思路 通过数学推理&#xff0c;列举找规律&#xff0c;发现当石头数为4的倍数时&#xff0c;我会输掉游戏&#xff1b;而其他情况&#xff0c;我都会赢得游戏。 三、代码 bool canWinNim(int n){if(n%40)return false;…

DC电源模块的模拟电源有什么优势?

BOSHIDA DC电源模块的模拟电源有什么优势&#xff1f; DC电源模块是电子系统中必不可少的部件之一。它们提供了可靠的直流电源&#xff0c;以驱动多种类型的电子设备。随着技术的进步&#xff0c;市场上出现了各种不同类型的DC电源模块&#xff0c;包括模拟电源和数字电源等。…

SM4国密4在jdk1.7版本和jdk1.8版本中的工具类使用

&#xff08;一&#xff09;首先&#xff0c;直接可用的工具类如下&#xff1a; 1、JDK1.8版本&#xff0c;使用hutool工具类实现SM4对称加密&#xff0c;pom依赖如下&#xff1a; <!-- Hutool 工具包 --><dependency><groupId>cn.hutool</groupId><…

kubeadm初始化的k8s集群证书续期—— 筑梦之路

脚本自动化方式 这个是一个开源的项目&#xff1a;https://gitee.com/ximy/update-kube-cert 该项目可以自动化更新k8s集群的证书&#xff0c;使用也很简单。 该脚本可将 kubeadm 生成的证书有效期更新为 10 年。 git clone https://github.com/yuyicai/update-kube-cert.g…

使用logger.error(“自定义错误信息描述“,e)将错误信息输出到日志文件上

之前一直用e.getMessage()来获取错误信息 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ClassF…

css步骤条

html 代码以及样式 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>css步骤条</title><style>.steps {display: flex;justify-content: space-between;padding: 0;margin: 20px 10px;l…

【2021研电赛】基于动态无线充电技术的自动驾驶小车

本作品介绍参与极术社区的有奖征集|分享研电赛作品扩大影响力&#xff0c;更有重磅电子产品免费领取! 参赛单位&#xff1a;北京交通大学 作品简介 近年来&#xff0c;电动汽车的发展得到了很多国家和车企的大力支持&#xff0c;但其仍然存在充电时间长、充电设施不齐全等问…

酷开科技 | 酷开系统沉浸式大屏游戏更解压!

随着家庭娱乐需求日益旺盛&#xff0c;越来越多的家庭消费者和游戏玩家开始追求大屏游戏带来的沉浸感。玩家在玩游戏的时候用大屏能获得更广阔的视野和更出色的视觉包围感&#xff0c;因此用大屏玩游戏已经成为了一种潮流。用酷开系统玩大屏游戏&#xff0c;过瘾又刺激&#xf…

迷你洗衣机哪个牌子好又实惠?小型洗衣机全自动

现在洗内衣内裤也是一件较麻烦的事情了&#xff0c;在清洗过程中还要用热水杀菌&#xff0c;还要确保洗衣液是否有冲洗干净&#xff0c;还要防止细菌的滋生等等&#xff0c;所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的&#xff0c;专门的内衣洗衣机可以最大程度减少…