当前位置:首页 > VUE

vue实现组件

2026-01-08 03:23:52VUE

Vue 组件实现基础

Vue 组件是可复用的 Vue 实例,用于封装 UI 和逻辑。通过 .vue 文件或直接注册组件实现。

单文件组件 (SFC) 示例

<template>
  <div class="example-component">
    <p>{{ message }}</p>
    <button @click="changeMessage">点击修改</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello Vue!"
    };
  },
  methods: {
    changeMessage() {
      this.message = "Message changed!";
    }
  }
};
</script>

<style scoped>
.example-component {
  color: blue;
}
</style>

全局注册组件

main.js 或入口文件中全局注册,所有地方可直接使用:

import ExampleComponent from './components/ExampleComponent.vue';
Vue.component('example-component', ExampleComponent);

局部注册组件

仅在当前组件内可用:

import ExampleComponent from './components/ExampleComponent.vue';

export default {
  components: {
    'example-component': ExampleComponent
  }
};

动态组件

通过 <component :is> 动态切换组件:

<template>
  <component :is="currentComponent"></component>
  <button @click="toggleComponent">切换组件</button>
</template>

<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';

export default {
  data() {
    return {
      currentComponent: 'ComponentA'
    };
  },
  components: {
    ComponentA,
    ComponentB
  },
  methods: {
    toggleComponent() {
      this.currentComponent = this.currentComponent === 'ComponentA' 
        ? 'ComponentB' 
        : 'ComponentA';
    }
  }
};
</script>

Props 数据传递

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

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

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: { ChildComponent },
  data() {
    return {
      parentTitle: "来自父组件的标题"
    };
  }
};
</script>

<!-- 子组件 ChildComponent.vue -->
<template>
  <h2>{{ title }}</h2>
</template>

<script>
export default {
  props: ['title'] // 或使用对象形式定义类型/默认值
};
</script>

事件通信(子 → 父)

子组件通过 $emit 触发父组件事件:

<!-- 子组件 -->
<template>
  <button @click="notifyParent">通知父组件</button>
</template>

<script>
export default {
  methods: {
    notifyParent() {
      this.$emit('custom-event', '子组件数据');
    }
  }
};
</script>

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

<script>
export default {
  methods: {
    handleEvent(data) {
      console.log(data); // 输出 "子组件数据"
    }
  }
};
</script>

插槽(Slots)

分发内容到子组件:

<!-- 父组件 -->
<template>
  <child-component>
    <p>插入到子组件的插槽内容</p>
  </child-component>
</template>

<!-- 子组件 -->
<template>
  <div>
    <slot></slot> <!-- 插槽内容渲染位置 -->
  </div>
</template>

生命周期钩子

在组件不同阶段执行逻辑:

export default {
  created() {
    console.log('组件实例已创建');
  },
  mounted() {
    console.log('DOM 挂载完成');
  },
  beforeDestroy() {
    console.log('组件销毁前');
  }
};

vue实现组件

标签: 组件vue
分享给朋友:

相关文章

vue实现扫描二维码

vue实现扫描二维码

实现 Vue 扫描二维码功能 在 Vue 中实现扫描二维码功能,可以通过第三方库或原生 API 完成。以下是两种常见方法: 使用 vue-qrcode-reader 库 vue-qrcode-rea…

vue公共列表的实现

vue公共列表的实现

实现 Vue 公共列表组件 公共列表组件通常用于展示重复结构的数据,例如商品列表、用户列表等。以下是一个典型的实现方式: 基础实现 创建可复用的列表组件 List.vue: <templ…

vue里实现增删改查

vue里实现增删改查

在Vue中实现增删改查 数据初始化 在Vue组件的data中定义初始数据和表单绑定的变量: data() { return { items: [ { id: 1, name:…

vue如何实现

vue如何实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是几种常见的实现方式: 组件化开发 使用 Vue 的单文件组件(.vue 文件)结构,将 UI 拆分为可复…

vue单选实现

vue单选实现

Vue 单选实现 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选效果。当用户选择不同的选…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas 绘制…