当前位置:首页 > uni-app

uniapp定义的组件

2026-02-06 09:23:13uni-app

组件定义方式

在UniApp中,组件可以通过两种方式定义:全局组件和局部组件。全局组件在main.js中注册,局部组件在页面或组件的components选项中注册。

全局组件示例(main.js中):

import Vue from 'vue'
import MyComponent from './components/MyComponent.vue'

Vue.component('my-component', MyComponent)

局部组件示例(页面或组件中):

import MyComponent from '@/components/MyComponent.vue'

export default {
  components: {
    'my-component': MyComponent
  }
}

组件文件结构

UniApp组件通常以单文件组件(.vue文件)形式存在,包含三个部分:

  • <template>:模板部分,编写组件结构
  • <script>:逻辑部分,定义组件行为
  • <style>:样式部分,定义组件样式

示例组件文件(MyComponent.vue):

uniapp定义的组件

<template>
  <view class="my-component">
    <text>{{ message }}</text>
  </view>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      default: 'Hello World'
    }
  }
}
</script>

<style>
.my-component {
  padding: 20px;
}
</style>

组件通信机制

UniApp组件通信遵循Vue.js的通信机制,主要包括以下几种方式:

  • Props:父组件向子组件传递数据
  • Events:子组件通过$emit向父组件发送事件
  • Refs:父组件通过ref属性访问子组件实例
  • Provide/Inject:跨层级组件通信
  • Vuex:全局状态管理

Props示例:

<!-- 父组件 -->
<template>
  <child-component :title="parentTitle" />
</template>

<!-- 子组件 -->
<script>
export default {
  props: ['title']
}
</script>

事件示例:

uniapp定义的组件

<!-- 子组件 -->
<template>
  <button @click="handleClick">Click</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      this.$emit('custom-event', 'data')
    }
  }
}
</script>

<!-- 父组件 -->
<template>
  <child-component @custom-event="handleEvent" />
</template>

生命周期钩子

UniApp组件生命周期与Vue组件生命周期一致,常用钩子包括:

  • created:组件实例创建完成
  • mounted:组件挂载到DOM后
  • updated:数据更新导致DOM重新渲染后
  • destroyed:组件销毁后

示例:

export default {
  created() {
    console.log('组件创建')
  },
  mounted() {
    console.log('组件挂载')
  }
}

样式作用域

通过scoped属性可以实现组件样式作用域隔离,避免样式污染:

<style scoped>
/* 这里的样式只作用于当前组件 */
</style>

平台差异处理

UniApp支持条件编译处理多平台差异:

<template>
  <!-- #ifdef H5 -->
  <div>H5特有内容</div>
  <!-- #endif -->
  <!-- #ifdef MP-WEIXIN -->
  <view>微信小程序特有内容</view>
  <!-- #endif -->
</template>

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

相关文章

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Butto…

uniapp组件

uniapp组件

uniapp组件基础概念 uniapp的组件系统基于Vue.js,支持跨平台开发(H5、小程序、App等)。组件分为内置基础组件(如<view>、<button>)和自定义组件…

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性来完成。以下是几种常见的实…

vue实现tooltips组件

vue实现tooltips组件

实现基础 Tooltip 组件 创建一个名为 Tooltip.vue 的单文件组件,包含模板、样式和逻辑: <template> <div class="tooltip-co…

vue 实现组件刷新

vue 实现组件刷新

组件局部刷新 在Vue中实现组件刷新可以通过强制重新渲染组件来实现。常用的方法有以下几种: 使用v-if指令 通过切换v-if条件触发组件的销毁和重建 <template> &…

vue实现水印组件

vue实现水印组件

Vue 水印组件的实现方法 使用Canvas绘制水印 在Vue组件中通过Canvas动态生成水印图案,将其作为背景添加到目标元素上。 <template> <div ref="…