vue实现子组件和父组件之间的组件通信问题

组件的概念就不再多说了

那什么是子父组件呢?

         父子组件是一个相对概念
A组件使用了B组件 那么 A 就是B的父组件 B就是A的子组件
B组件使用了A组件 那么 B 就是A的父组件 A就是B的子组件

子父组件如何实现通信问题?

简单来说就是两句话(还有多种方法这里就不写l):

父传子  其实就是通过自定义属性  子组件通过props接收
子传父  其实就是通过自定义事件  子组件通过$emit触发父组件定义的事件 并且把子组件的数据
        通过参数的方式给了父组件;

那么下面拿案例来说明:

要求:现要实现一个动态投票组件,点击支持,支持人数加一,总人数加1;点击反对,反对人数加一,总人数加一;支持率动态变化 支持率 = 支持人数/总人数 

实现原理:基于props属性传递

        1.父组件调用到的时候,可以使用自定义属性传值:

        自定义属性传递的属性值默认都是字符串,如果需要传递其它数据类型值,
     我们需要基于v-bind处理 => :supnum="10" 这样传递过去的就是Number类型,就是前面加个:

<my-component aa='zhufeng' :bb='xxx'></my-component>

         2.子组件中基于props声明需要接收的属性值:

Vue.component('my-component',{

props:['aa','bb'],

...

})

 使用props需要注意:

  • props中声明的属性和data一样,是响应式数据,挂载到vm实例上,可控制视图渲染

  • props中的一些细节问题

    • 命名大小写:传递的是kebab-case格式,props中获取的是camelCase驼峰命名

    • 指定属性的类型:props:{xxx:String,…}

    • 指定属性的默认值:props:{xxx:{type:String,default:’xxx’,required:true}}

      • type如果是一个数组,意为指定的多类型皆可以

      • default可以是一个函数,函数返回值是默认值

      • validator自定义验证规则函数:必须符合函数中指定的规则,返回true/false

    • 传递的属性值默认都是字符串格式,如果想要让传递的值是数字、布尔、数组、对象等格式,我们需要使用v-bind处理

    • 在组件上添加样式和class自动合并问题

 案例效果图:

具体代码实现:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css">
	<title>title</title>
	<!-- IMPORT CSS -->
	<link rel="stylesheet" href="css/reset.min.css">
	<link rel="stylesheet" href="node_modules/bootstrap/dist/css/b
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值