UniApp在Vue3下使用setup语法糖创建和使用自定义组件

embedded/2024/11/21 19:03:00/

UniApp在Vue3下使用setup语法糖创建和使用自定义组件

在现代前端开发中,Vue 3 的 <script setup> 语法糖极大地简化了组件的编写和使用。本文将详细介绍如何在 UniApp 中使用 Vue 3 的 <script setup> 语法创建自定义组件,并在其他组件中使用这些自定义组件。

1. 创建自定义组件

首先,我们创建一个简单的自定义组件 MyComponent.vue。这个组件将接收一些属性,并展示一些基本内容。

MyComponent.vue

<template><view :style="styleObject"><p v-if="showText">{{ text }}</p><p>Number: {{ number }}</p><p>Boolean: {{ boolean }}</p><ul><li v-for="item in array" :key="item">{{ item }}</li></ul><p>Object: {{ object.name }} - {{ object.age }}</p><button @click="emitEvent">点击触发事件</button></view>
</template><script setup>
import { defineProps, defineEmits, computed } from 'vue';// 定义接收的 props
const props = defineProps({text: {type: String,default: '默认文本'},number: {type: Number,default: 0},boolean: {type: Boolean,default: false},array: {type: Array,default: () => []},object: {type: Object,default: () => ({ name: '默认名字', age: 20 })}
});// 定义触发的事件
const emit = defineEmits(['customEvent']);// 计算属性,用于处理样式对象
const styleObject = computed(() => ({marginTop: props.number + 'px',color: props.boolean ? 'red' : 'black'
}));// 方法:触发自定义事件
const emitEvent = () => {emit('customEvent', '这是一个自定义事件');
};
</script><style scoped>
/* 组件内的局部样式 */
button {margin-top: 10px;
}
</style>

详细解释

1.1 定义属性 (defineProps)

MyComponent.vue 中,我们使用 defineProps 来定义组件可以接收的属性。每个属性都有一个类型和默认值:

const props = defineProps({text: {type: String,default: '默认文本'},number: {type: Number,default: 0},boolean: {type: Boolean,default: false},array: {type: Array,default: () => []},object: {type: Object,default: () => ({ name: '默认名字', age: 20 })}
});
1.2 定义事件 (defineEmits)

我们使用 defineEmits 来定义组件可以触发的事件。在这个例子中,我们定义了一个名为 customEvent 的事件:

const emit = defineEmits(['customEvent']);
1.3 计算属性 (computed)

我们使用 computed 来创建一个计算属性 styleObject,它根据传递的 numberboolean 属性生成样式对象:

const styleObject = computed(() => ({marginTop: props.number + 'px',color: props.boolean ? 'red' : 'black'
}));
1.4 方法 (emitEvent)

我们定义了一个方法 emitEvent,当用户点击按钮时,触发 customEvent 事件,并传递一个消息:

const emitEvent = () => {emit('customEvent', '这是一个自定义事件');
};

2. 使用自定义组件

接下来,我们在另一个 .vue 文件中导入并使用这个自定义组件,同时传递属性和监听事件。

App.vue

<template><view><MyComponent text="你好,世界!":number="50":boolean="true":array="['苹果', '香蕉', '橙子']":object="{ name: '张三', age: 30 }"@customEvent="handleCustomEvent"/></view>
</template><script setup>
import MyComponent from './components/MyComponent.vue';// 定义一个方法来处理自定义事件
const handleCustomEvent = (message) => {console.log('自定义事件触发:', message);
};
</script><style>
/* 页面级别的样式 */
</style>

详细解释

2.1 导入和使用自定义组件

App.vue 中,我们导入 MyComponent 并在模板中使用它,同时传递属性和监听事件:

<MyComponent text="你好,世界!":number="50":boolean="true":array="['苹果', '香蕉', '橙子']":object="{ name: '张三', age: 30 }"@customEvent="handleCustomEvent"
/>
2.2 处理自定义事件

我们定义了一个方法 handleCustomEvent 来处理自定义事件 customEvent

const handleCustomEvent = (message) => {console.log('自定义事件触发:', message);
};

总结

通过以上步骤,我们创建了一个自定义组件 MyComponent,并在 App.vue 中使用它。我们传递了多种类型的属性,并且监听了自定义事件。这种方式使得组件的复用性和可维护性大大增强。


http://www.ppmy.cn/embedded/139402.html

相关文章

在CentOS 7上配置Nginx的TCP端口转发

在现代网络环境中,TCP端口转发是一项非常重要的功能,它允许你将网络流量从一个端口或地址转发到另一个端口或地址。Nginx作为一个高性能的HTTP和反向代理服务器,同时也支持TCP/UDP流量的转发,这得益于其内置的stream模块。本文将详细介绍如何在CentOS 7上安装Nginx,并配置…

攻防世界-mfw

进入题目以后可以点击三个网页&#xff0c;这三个网页其中有一个提示我们git、php、Bootstrap。可以联想到是git泄露 在url后面的参数改为.git 存在git漏洞&#xff0c;这时候就可以利用python的githacker库下载泄漏的文件 查看index.php的源代码 <?phpif (isset($_GET[pa…

uniapp开发微信小程序笔记4-自定义组件

前言&#xff1a;本文重点记录的是uniapp如何封装一个自定义组件&#xff0c;以swiper组件为例。 一、创建组件目录 官方文档中的easycom组件规范中可以看到这样一句话&#xff1a; 只要组件安装在项目的components目录下或uni_modules目录下&#xff0c;并符合components/组…

2、PyTorch张量的运算API(上)

1. 教学视频 2、PyTorch张量的运算API&#xff08;上&#xff09; 因比较忙&#xff0c;暂时就做个过场吧。 2. Python代码 Python #!/usr/bin/env python # -*- coding:utf-8 -*- # FileName :torch_learn2.py # Time :2024/11/16 19:53 # Author :Jason Zhangi…

某杀软环境下的添加账户

某杀软环境下的添加账户 我们在某个杀软环境下&#xff0c;正常添加账户一般是会被直接拦截的 白&#xff0b;黑 在这个环境下&#xff0c;白&#xff0b;黑是最实用的绕过方式&#xff0c;我们可以通过调用winapi来创建账户&#xff0c;这些代码再存储到dll里面&#xff0c…

2025 -生信信息学 - GO-KEGG-DO分析

生信信息学 - GO-KEGG-DO分析 01 GO分析 library("org.Hs.eg.db") library("clusterProfiler") library("enrichplot") library("ggplot2") library("ggnewscale") library("enrichplot") library("DOSE&q…

线性代数(第四章:方程组)

一、方程组的基础知识 1. 方程组的形式 2. 方程组的解 1)齐次方程组 2)非齐次方程组 3)总结 3. 方程组解的结构与性质 1)基础解系 若向量组 η1 , η2 ,…, ηr 满足: η1 , η2 ,…, ηr 为齐次线性方程组 Ax = 0 的解;η1 , η2 ,…, ηr 为全部解的极大线性无关组…

数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…