VUE封装组件

vue如何封装一个公共组件来供程序反复调用呢?可按如下步骤进行:

1、定义一个vue文件。 

如下:

<template>
  <div class="calPane">
   <div class="calendars" style="height: 50%;width: 100%;">
      <slot name="calendar"></slot>
    </div>
    <div class="lunar" style="height: 50%;width: 100%;">
      <slot name="lunar"></slot>
    </div>
  </div>
</template>

<script setup src="SchedulePane.js">

</script>

说明:该文件中声明了下class=“calPane”的div,它又平分成两个子div,宽度是100%,高度是50%;每个div中声明了一个solt插槽用来接收传过来的数据。

solt是vue3前的。

script中的src是引用对应的js。当然js可以直接写在script中,而不用单独写一个js文件。

export default {
    name: "schedulePane"
}

说明:这儿声明的schedulePane在后面注册组件时要用到;

2、注册封装的组件;

分为全局注册跟局部注册;

此处只说全局注册:

        在main.js中注册

        import schedulePane from “组件路径”;//自定义的组件。schedultPane是自定义组件对应的js中声明的,要保持一致。

        app.use(schedulePane);

局部注册还在研究中。。。

3、引入封装的组件;

<el-row v-for="(arr) in all" :key="weekArr" :offset="1">
  <el-col class="calPane" :span="3" v-for="(wek) in arr" :key="wek" :offset="0">
    <schedulePane><h1>{{wek}}</h1><h1>{{wek}}</h1></schedulePane>
  </el-col>
</el-row>

我这里是循环调用的。结果如上图所示。

后续继续。。。。。。

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> ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值