壹影博客.
我在下午4点钟开始想你
vue自定义组件使用经验分享
  • 2023-12-15日
  • 0评论
  • 8050围观

vue自定义组件使用经验分享

在前端使用vue开发的过程中经常会使用到的技能,记录并分享出来

一、定义组件vue

自定义对话框组件 article-dialog.vue

<template>
      <el-dialog class="dialog" :title="title" append-to-body :visible="visible" @close="$emit('update:visible',false)" width="60%">
        <h2>{{dialogData.title}}</h2>
        <div class="dialogDate" > {{ dialogData.createTime }} </div>
        <div class="dialogImg">
          <img class="dialogCover" :src="dialogData.cover"/>
        </div> 
        
        <div style="margin-top: 10px;" v-html="dialogData.content">  </div>
        <span slot="footer" class="dialog-footer">
        </span>
      </el-dialog>
</template>
<script>
export default {
    // 自定义组件的属性
    props: {
        visible: Boolean,
        title:String
    },
  data() {
    return {
      // title:"提示框",  
      dialogVisible: false,
      dialogData:{},
    };
  },
}
</script>
<style lang="scss">
.dialog{
    h2{
     text-align: center;
      font-weight: bold;
      margin: 10px;
      color: #1c1c1c;
    }
    .dialogDate{
      text-align: center;
    }
    .dialogImg {
      display: flex;
      justify-content: center;

      .dialogCover {
        width: 40%;
        margin-top: 20px;
        margin-bottom: 20px;
      }
    }
}
</style>

二、使用组件

简易的使用 一般有如下步骤:引入、注册组件、描述标签、传递参数

<!-- 版本说明页面 -->
<template>
  <basic-container>
    <div class="api-title" >版本说明</div>
    <div class="panel"  v-loading="loading">
      <div v-for="(item, index) in fromData" :key="item" class="recommend-item-box" @click="itemClick(item)">
      <div class="content-box">
        <div class="content-blog">
          <div class="title-box">
            <div class="ellipsis-online" style="align-items: center;font-size: 16px;line-height: 24px;">{{ item.title }}
            </div>
          </div>
          <div class="info-box">
            <div class="info"><span>{{ item.createTime }}</span></div>
          </div>
        </div>
      </div>
    </div>

    </div>
      <!-- 第三步:描述标签提供属性 -->
      <detail-dialog ref="visDialog" title="版本说明" :visible.sync="visible"></detail-dialog>
  </basic-container>
</template>
    
<script>

//第一步:引入
import detailDialog from "@/components/yyge/article-dialog";

export default {
  components:{
    //第二步:注册  
    detailDialog
  },
  data() {
    return {
      fromData:[],
      visible: false
    };
  },
  methods: {
    itemClick(row) {
       //第四步:传递参数 
       //传递自定义组件内的 dialogData 对象
       this.$refs.visDialog.dialogData=row
       //设置自定义组件内的  dialogVisible 为true
       this.$refs.visDialog.dialogVisible=true
    },

  },
};
</script>
    
<style lang="scss" scoped>...</style>
    

 

发表评论

渝ICP备19011465号 | 渝ICP备19011465号-1