当前位置:首页 > VUE

vue基础组件实现

2026-01-18 04:32:22VUE

Vue 基础组件实现

组件定义

使用 Vue.component 全局注册或局部注册组件。全局注册适合通用组件,局部注册适合特定页面使用的组件。

// 全局注册
Vue.component('my-component', {
  template: '<div>基础组件内容</div>'
});

// 局部注册
const MyComponent = {
  template: '<div>局部组件内容</div>'
};
new Vue({
  el: '#app',
  components: { MyComponent }
});

模板语法

组件模板支持 HTML 和 Vue 指令(如 v-ifv-for)。单文件组件(.vue 文件)需配合构建工具使用。

<template>
  <div>
    <p v-if="showText">{{ message }}</p>
    <button @click="toggleText">切换显示</button>
  </div>
</template>

Props 数据传递

父组件通过 props 向子组件传递数据。使用 v-bind 动态传递或直接传递静态值。

// 子组件定义
Vue.component('child-component', {
  props: ['title'],
  template: '<h3>{{ title }}</h3>'
});

// 父组件使用
<child-component title="动态标题" :dynamic-title="parentData"></child-component>

事件通信

子组件通过 $emit 触发事件,父组件通过 v-on 监听。

// 子组件触发事件
this.$emit('custom-event', eventData);

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

插槽内容分发

使用 <slot> 实现内容分发,支持默认插槽和命名插槽。

<!-- 子组件 -->
<div>
  <slot name="header"></slot>
  <slot>默认内容</slot>
</div>

<!-- 父组件 -->
<child-component>
  <template v-slot:header><h1>标题</h1></template>
  <p>主内容</p>
</child-component>

生命周期钩子

在组件不同阶段执行逻辑,如 createdmounted

Vue.component('lifecycle-demo', {
  created() {
    console.log('组件实例创建完成');
  },
  mounted() {
    console.log('DOM 挂载完成');
  }
});

样式与作用域

单文件组件中可通过 <style scoped> 限制样式作用域。

<style scoped>
.button {
  color: red; /* 仅作用于当前组件 */
}
</style>

动态组件

使用 <component :is="currentComponent"> 实现动态切换组件。

vue基础组件实现

<component :is="tabComponent"></component>

注意事项

  • 组件命名建议使用 kebab-case(如 my-component)。
  • 避免直接修改 props,如需修改应使用本地 data 或计算属性。
  • 复杂状态管理建议配合 Vuex 使用。

标签: 组件基础
分享给朋友:

相关文章

vue动态组件实现

vue动态组件实现

Vue 动态组件实现方法 使用 component 标签与 is 属性 通过 Vue 内置的 <component> 标签和 is 属性实现动态组件切换。is 的值可以是已注册的组件名或导…

vue实现下拉刷新组件

vue实现下拉刷新组件

Vue 下拉刷新组件实现 核心思路 通过监听 touch 事件计算滑动距离,结合 CSS 过渡动画实现下拉效果,触发刷新回调。 基础实现步骤 监听 touch 事件 在组件 mounted 阶段绑定…

实现vue组件

实现vue组件

创建 Vue 组件 Vue 组件可以通过单文件组件(.vue 文件)或直接在 JavaScript 中定义。以下是两种常见实现方式。 单文件组件方式 单文件组件包含模板、脚本和样式三部分,适合复杂项…

vue radio组件实现

vue radio组件实现

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

vue实现水印组件

vue实现水印组件

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

vue 实现弹窗组件

vue 实现弹窗组件

Vue 弹窗组件实现 基础弹窗组件结构 创建一个名为Modal.vue的文件,定义弹窗的基础结构和样式: <template> <div class="modal-mask"…