Vue自定义封装组件

Vue自定义封装组件

1.在components文件夹下创建一个自定义组件名称的Vue文件,对组件进行相应的布局,添加样式,在script标签中的Vue实例下添加props对象,用来接收动态属性并设置其数据类型,例

props:{
  	title : String,
    price : [Number,String],
}

通过$emit派发自定义事件:

  <div  @click="eventType"></div>//自定义事件
  <script>
	export default {
	    methods:{
	        eventType(){
	            this.$emit('click',[需要传递的参数])//click 调用组件时添加的事件名称
	        }
	    }
	}
</script>

2.调用自定义组件

  • 对自定义组件进行引入并进行命名
<script>
	import GoodCard from '@/components/GoodCard'
	export default {
	  components:{
	    "good-card" : GoodCard
	  },
	}
</script>

3.然后就可以对自定义组件进行使用了

示例
实现一个简单的商品卡片

自定义组件Vue文件(css样式没有写进来)

<template>
  <div class="cardList" @click="goCart">
      <img class="cardImg" :src="mainPic">
      <div class="listContent">
        <span class="cardTit">{{ title }}</span>
        <span class="cardPrint">{{ price }}
        </span>
      </div>
  </div>
</template>

<script>
export default {
    props:{
        title : String,
        price : [Number,String],
        mainPic : String
    },
    methods:{
        goCart(){
            this.$emit('click')
        }
    }
}
</script>

调用自定义组件Vue文件

<template>
	<good-card v-for="(item,index) in shopList" 
                  :key="index" 
                  :title="item.title" 
                  @click="goCard(item)"
                  :price="item.originalPrice" 
                  :mainPic="item.mainPic">
     </good-card>
</template>

<script>
import GoodCard from '@/components/GoodCard'//引入自定义组件
export default {
  components:{
    "good-card" : GoodCard //设置组件标签名
  },
  methods:{
    goCard(item){
      //对应执行事件
    }
  },
}

读取数据后效果图
在这里插入图片描述
Vue单向数据流
所有的 prop 都使得其⽗⼦ prop 之间形成了⼀个单向下⾏绑定:⽗级 prop 的更新会向下流动到⼦组件中,但是反过来则不⾏。这样会防⽌从⼦组件意外改变⽗级组件的状态,从⽽导致你的应⽤的数据流向难以理解。
额外的,每次⽗级组件发⽣更新时,⼦组件中所有的 prop 都将会刷新为最新的值。这意味着你不应该在⼀个⼦组件内部改变 prop。如果你这样做了,Vue 会在浏览器的控制台中发出警告。⼦组件想修改时,只能通过 $emit 派发⼀个⾃定义事件,⽗组件接收到后,由⽗组件修改。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值