vue 组件传值 父子组件传值,兄弟组件传值

1 篇文章 0 订阅
1 篇文章 0 订阅

父子组件中的传值 父向子 v-bind props

<!-- 组件使用v-bind传值 -->
 <router :msg="msg"></router>

子组件:
<p>子组件 ----- {{msg}}</p> 

 props: ["msg"], //props接收

props:验证

props: {
    // fooA只接受数值类型的参数
    fooA: Number,
    // fooB可以接受字符串和数值类型的参数
    fooB: [String, Number],
    // fooC可以接受字符串类型的参数,并且这个参数必须传入
    msg: {
      type: String,
      required: true
    },
    // fooD接受数值类型的参数,如果不传入的话默认就是100
    fooD: {
      type: Number,
      default: 100
    },
    // fooE接受对象类型的参数
    fooE: {
      type: Object,
      // 当为对象类型设置默认值时必须使用函数返回
      default: function() {
        return { message: "Hello, world" };
      }
    },
    // fooF使用一个自定义的验证器
    fooF: {
      validator: function(value) {
        return value >= 0 && value <= 100;
      }
    },
  fooG: {
      type:Array,
      // 当为数组类型设置默认值时必须使用数组返回
      default: function() {
        return [];
      }
    },
}

props 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件修改父组件的状态。所以不应该在子组件中修改 props 中的值,Vue 警告。

子向父 v-on $emit

子组件:
<button @click="cyy">按钮</button>
methods: {
    cyy() {
      this.$emit("zifu", "子组件向父组件传值", true);
    }
  }

父组件:
<router  v-on:zifu="hehe"></router>
methods: {
   hehe: function(data, data2) {
     console.log(data, data2);
   }
}

兄弟组件中的传值

Bus中央事件总线

在这里插入图片描述

父组件组件代码:

<div> //爸爸A
    <router></router>    //哥哥A1
    <vuex></vuex>    //弟弟A2
</div>

哥哥A1组件:

<button @click="cyy">按钮</button> 点击按钮向弟弟A2传值脚本中:import Bus from "../api/Bus";   //注意引入
export default {
  data() {
    return {
      a: 1
    };
  },
  methods: {
    cyy() {
      Bus.$emit("zifu", this.a++, "子组件向兄弟组件传值");    //存 Bus.$emit
    }
  }
};

弟弟A2组件:

<p>接受兄弟A1传值=-------{{ccc}},{{ddd}}</p>脚本中:

import Bus from "../api/Bus";
export default {
  data() {
    return {
      ccc: "",
      ddd: ""
    };
  },
  created() {
    Bus.$on("zifu", (val, val1) => {    //取  Bus.$on
      this.ccc = val;
      this.ddd = val1;
    });
  }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值