当前位置:首页 > uni-app

uniapp组件写法

2026-01-13 19:22:03uni-app

Uniapp 组件的基本写法

Uniapp 的组件写法与 Vue 类似,支持单文件组件(.vue 文件)。一个基本的组件通常包含三个部分:<template><script><style>

<template>
  <view class="my-component">
    <text>{{ message }}</text>
    <button @click="handleClick">点击我</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello Uniapp!'
    }
  },
  methods: {
    handleClick() {
      console.log('按钮被点击了')
    }
  }
}
</script>

<style>
.my-component {
  padding: 20px;
}
button {
  margin-top: 10px;
}
</style>

组件注册与使用

在 Uniapp 中,组件分为全局注册和局部注册两种方式。

全局注册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: {
    MyComponent
  }
}

组件间通信

Uniapp 组件间通信主要有以下几种方式:

uniapp组件写法

Props 传递数据 父组件向子组件传递数据:

<!-- 父组件 -->
<child-component :msg="parentMessage"></child-component>

<!-- 子组件 ChildComponent.vue -->
<script>
export default {
  props: {
    msg: String
  }
}
</script>

$emit 触发事件 子组件向父组件发送事件:

<!-- 子组件 -->
<button @click="$emit('custom-event', payload)">触发事件</button>

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

使用 Vuex 状态管理 对于复杂应用,建议使用 Vuex 进行状态管理:

uniapp组件写法

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})

// 组件中使用
this.$store.commit('increment')
console.log(this.$store.state.count)

生命周期钩子

Uniapp 组件支持 Vue 的生命周期钩子,同时还扩展了一些应用特有的生命周期:

export default {
  onLoad() {
    // 页面加载时触发
  },
  onShow() {
    // 页面显示时触发
  },
  mounted() {
    // 组件挂载完成
  },
  beforeDestroy() {
    // 组件销毁前
  }
}

样式作用域

使用 scoped 属性可以限制样式只作用于当前组件:

<style scoped>
/* 这些样式只作用于当前组件 */
.my-class {
  color: red;
}
</style>

组件插槽

Uniapp 支持 Vue 的插槽机制,用于内容分发:

<!-- 父组件 -->
<my-component>
  <template v-slot:default>默认内容</template>
  <template v-slot:footer>页脚内容</template>
</my-component>

<!-- 子组件 MyComponent.vue -->
<view>
  <slot></slot>
  <view class="footer">
    <slot name="footer"></slot>
  </view>
</view>

注意事项

  • 组件名应使用 kebab-case(短横线分隔命名)
  • 避免在组件中使用 id 选择器,因为 Uniapp 会编译到不同平台
  • 组件中的 v-for 循环需要指定唯一的 key
  • 在小程序平台,组件样式可能会受到更多限制

标签: 写法组件
分享给朋友:

相关文章

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 compon…

vue实现组件跟随

vue实现组件跟随

Vue 实现组件跟随效果 实现组件跟随效果通常需要监听鼠标或触摸事件,动态更新组件位置。以下是几种常见实现方式: 使用鼠标事件绑定 <template> <div class=…

vue组件实现注册

vue组件实现注册

Vue 组件注册的两种方式 全局注册 通过 Vue.component() 方法注册,注册后可在任意 Vue 实例中使用。通常在项目的入口文件(如 main.js)中操作: import V…

vue 实现table组件

vue 实现table组件

Vue 实现 Table 组件 基础表格结构 使用 Vue 的模板语法构建表格的基本框架,通过 v-for 动态渲染数据。 <template> <table>…

vue实现表格组件

vue实现表格组件

Vue 表格组件实现方法 基础表格实现 使用 Vue 的模板语法可以快速实现基础表格功能。通过 v-for 指令循环渲染表格数据。 <template> <table>…

vue组件实现返回

vue组件实现返回

实现返回功能的 Vue 组件方法 监听浏览器返回事件 通过 window.addEventListener('popstate', callback) 监听浏览器返回按钮事件,在回调函数中执行自定义逻…