当前位置:首页 > uni-app

uniapp定义的组件

2026-03-05 11:14:57uni-app

uniapp 自定义组件的定义方式

在 uniapp 中,自定义组件是一种可复用的 UI 单元,通常用于封装特定的功能或样式。自定义组件通过 .vue 文件定义,包含模板、脚本和样式三部分。

组件文件结构示例:

<template>
  <view class="custom-component">
    <text>{{ title }}</text>
  </view>
</template>

<script>
export default {
  name: 'CustomComponent',
  props: {
    title: {
      type: String,
      default: '默认标题'
    }
  },
  data() {
    return {
      localData: '组件内部数据'
    }
  },
  methods: {
    handleClick() {
      this.$emit('customEvent', { detail: '事件数据' })
    }
  }
}
</script>

<style>
.custom-component {
  padding: 10px;
  background-color: #f5f5f5;
}
</style>

组件注册与使用

全局注册:main.js 中全局注册组件后,所有页面可直接使用:

import CustomComponent from '@/components/CustomComponent.vue'
Vue.component('CustomComponent', CustomComponent)

局部注册: 在页面或父组件中局部引入:

<script>
import CustomComponent from '@/components/CustomComponent.vue'
export default {
  components: { CustomComponent }
}
</script>

模板中使用:

<template>
  <view>
    <custom-component title="传入的标题" @customEvent="handleEvent" />
  </view>
</template>

组件通信机制

Props 向下传递: 父组件通过属性向子组件传递数据:

<child-component :propName="parentData" />

Events 向上通知: 子组件通过 $emit 触发父组件监听的事件:

this.$emit('eventName', payload)

Ref 访问实例: 父组件通过 ref 直接调用子组件方法:

<child-component ref="childRef" />
<script>
this.$refs.childRef.childMethod()
</script>

组件生命周期

uniapp 自定义组件支持 Vue 的标准生命周期钩子:

  • beforeCreate / created
  • beforeMount / mounted
  • beforeUpdate / updated
  • beforeDestroy / destroyed

同时支持 uniapp 特有的应用生命周期:

  • onShow / onHide(页面级组件)
  • onLoad / onUnload(页面级组件)

组件样式隔离

通过 style 标签的 scoped 属性实现样式隔离:

<style scoped>
/* 仅作用于当前组件 */
</style>

注意事项:

uniapp定义的组件

  • 组件名建议使用 PascalCase 命名
  • 事件名建议使用 kebab-case 命名
  • 避免在组件中直接修改 props 值
  • 复杂组件建议使用 v-model 实现双向绑定

标签: 组件定义
分享给朋友:

相关文章

vue组件传值实现分页

vue组件传值实现分页

Vue 组件传值实现分页 在Vue中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方法: 使用props和$emit 父组件通过props向子组件传递数据,子组件通过$emit向…

vue实现组件拖放

vue实现组件拖放

Vue 实现组件拖放的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue如何实现目录组件

vue如何实现目录组件

实现目录组件的基本思路 在Vue中实现目录组件通常需要结合页面内容的结构化数据(如标题层级),通过动态渲染生成可交互的目录。核心步骤包括提取标题、生成目录结构、实现滚动联动等。 提取标题信息 通过d…

vue实现组件循环图片

vue实现组件循环图片

Vue 实现组件循环图片的方法 在 Vue 中实现组件循环图片通常可以通过 v-for 指令结合动态数据绑定完成。以下是几种常见的实现方式: 使用静态图片路径数组 假设有一组本地图片路径,可以通过数…

如何判断react组件

如何判断react组件

判断 React 组件的依据 React 组件的判断通常基于其定义方式、功能特性和代码结构。以下是几种常见的判断方法: 函数组件与类组件 函数组件是通过 JavaScript 函数定义的,接收 pr…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask"…