vue 封装组件

1.新建一个vue文件

<template>
  
</template>

<script>
export default {

}
</script>

<style>

</style>

2.引入组件
全局或局部引入
如果为全局,则在main.js里面

import tr from './tr.vue'
vue.component('Tr',tr)

局部引入
在要引入的父组件文件里

<script>
import Tr from "./tr.vue";
export default {
  components: {
    Tr,
  },
  </script>

3.使用

<Tr :item="item" :index="index"></Tr>

在这里插入图片描述
4.子传父多个值
父组件

<Tr @getTrData="getTrData"></Tr>
<script>
export default {
	methods:
	getTrData(val1,val2){
	this.currentIndex=val1,
	this.isOpenChildrenNode=val2
}
}
</script>

在这里插入图片描述

子组件

<button @click="openChildrenNode(index)"></button>

<script>
export default {
  props: {
    index: Number,
    item: Object,
  },
  data() {
    return {
      isOpenChildrenNode: false,
      currentIndex: -1,
    };
  },
  methods: {
    openChildrenNode(index) {
      this.isOpenChildrenNode = !this.isOpenChildrenNode;
      this.currentIndex = index;
      this.$emit("getTrData", this.currentIndex, this.isOpenChildrenNode);
    },
  },
};
</script>

在这里插入图片描述

Vue封装组件的具体过程如下: ### 创建组件文件 在项目中创建一个新的以 `.vue` 为后缀的组件文件。例如,创建 `MyComponent.vue` 文件,其结构通常包含 `<template>`、`<script>` 和 `<style>` 三部分。 ```vue <!-- MyComponent.vue --> <template> <div class="my-component"> <h1>{{ title }}</h1> <p>{{ content }}</p> </div> </template> <script> export default { data() { return { title: 'Hello', content: 'This is my component' } } } </script> <style scoped> .my-component { background-color: #f3f3f3; padding: 20px; } </style> ``` 此文件中,`<template>` 部分定义了组件的 HTML 结构,`<script>` 部分定义了组件的逻辑,`<style>` 部分定义了组件的样式,`scoped` 属性表示样式只作用于当前组件 [^1]。 ### 定义组件逻辑 在 `<script>` 标签内定义组件的逻辑,可包含数据、方法、生命周期钩子等。在 `MyComponent.vue` 中,通过 `data` 函数返回一个对象,对象中的属性可在模板中使用 [^1]。 ### 封装组件样式 在 `<style>` 标签内编写组件的样式,使用 `scoped` 属性可确保样式只作用于当前组件,避免样式冲突 [^1]。 ### 在其他组件中使用封装好的组件 创建另一个组件文件,如 `OtherComponent.vue`,在其中引入并使用封装好的组件。 ```vue <!-- OtherComponent.vue --> <template> <div> <my-component></my-component> </div> </template> <script> import MyComponent from '@/components/MyComponent.vue' export default { components: { MyComponent } } </script> ``` 在 `OtherComponent.vue` 中,先使用 `import` 语句引入 `MyComponent.vue`,然后在 `components` 选项中注册该组件,最后就可在模板中使用 `<my-component>` 标签来渲染该组件 [^1]。 ### 组件传参(可选) 若需要向组件传递数据,可使用 `props`。在 `MyComponent.vue` 中添加 `props`: ```vue <script> export default { props: { title: String, content: String }, data() { return { // 这里可以根据需要设置默认值 } } } </script> ``` 在 `OtherComponent.vue` 中传递参数: ```vue <template> <div> <my-component title="New Title" content="New Content"></my-component> </div> </template> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值