两个子组件之间的传值

举例:将A的drawerStart数值传递给B,来决定B的某个样式是否显示,并且点击 @click="changerDrawerStart"会改变 drawerStart的数值(这里可以使用监听watch,监听drawerStart的改变),通过$emit方法来实现传参的方式

组件A代码:

思路:如果两个子组件在同一个父组件上,可以将父组件作为一个桥梁(用一个中间值),中间商,先将决定性元素的子组件A的值先传给父组件,再通过父组件传给另外一个子组件B

具体步骤如下:

子组件A-主动组件

<template>
  <div class="input-search" :style="{width:width+'px'}">
    <p class="searchBody">
      <img :src="searchImg" alt=""  @click="changerDrawerStart" v-show="drawerStart" >
    </p>
  </div>
</template>
<script>
export default {
  name: 'inputSearch',//子组件的名称
  data () {
    return {
      drawerStart: false,//初始化drawerStart
    }
  },
  watch: {
    drawerStart (t) {
      console.log(‘t’,t)监听drawerStart,查看drawerStart的改变,可以打印一下t,这里的t就是指代drawerStart的数值
      this.$emit('drawerShow', t)//主要是通过$emit方法来实现传参的方式,第一个参数是自定义事件名称,第二个则是要传的数据
    }
  },
  methods: {
    changerDrawerStart () {//点击,改变drawerStart的值
      this.drawerStart = !this.drawerStart
    }
  }
</script>

桥梁-父组件

<template>
<div class="left-nav-main">
  <input-search @drawerShow="drawerShow" ></input-search>//子组件A
  <header-drawer//子组件B
   :isShow='isShow'
  ></header-drawer>
</div>
</template>
<script>
export default {
  data () {
    return {
      isShow : false,//中间值isShow初始化
    }
  },
  methods: {
    drawerShow (t) {//将drawerShow的值(即t),赋给中间值isShow
      this.isShow = t
    },
  }
</script>

子组件B-被控制组件:

<template>
<div class="drawer" >
    <p  v-show="!isShow" class="current-title" >{{headerData.renderTitle}}</p>
</div>
</template>
<script>
export default {
    props: {//props接受父组件传递的值。
      isShow:{
        type:Boolean,
        default:[]
      }
    },
</script>

方法总结:两个步骤:
1.子组件A=>父组件:组件A使用$emit传递
2.父组件=>子组件B:组件B使用props接受

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值