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

父子组件中的传值

父向子    v-bind props

 
 

子组件:

子组件 ----- {{msg}}

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

子组件:

methods: {
    cyy() {
      this.$emit("zifu", "子组件向父组件传值", true);
    }
  }

父组件:

methods: {
   hehe: function(data, data2) {
     console.log(data, data2);
   }
}

兄弟组件中的传值

第一个办法:父组件中转

//爸爸A //哥哥A1     //弟弟A2

A1要向A2传值 、 可以用$emit传给A、A在使用v-bind传给A2 

使用父组件做中转 这里不举例了只是把上面的子向父,父向子连起来用

第二个方法:Bus中央事件总线

新建一个Bus.js 页面
vue 父子组件传值,兄弟组件传值_第1张图片

父组件组件代码:

//爸爸A //哥哥A1     //弟弟A2

 哥哥A1组件:

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

弟弟A2组件:

接受兄弟A1传值=-------第{{ccc}}次,向{{ddd}}


脚本中:
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; }); } };

传值就告一段落了~~~~~~~~~~~~by~~~

转载于:https://www.cnblogs.com/chen-yi-yi/p/11152391.html

你可能感兴趣的:(vue 父子组件传值,兄弟组件传值)