Vue子组件调用父组件事件的三种方法

1. 在子组件中通过this.$parent.event来调用父组件的方法,data参数可选

  
    

我是父组件

import child from '@/components/child'; export default { components: { child }, methods: { fatherMethod(data) { console.log('我是父组件方法'); } } };
  
    

我是子组件

export default { methods: { childMethod() { this.$parent.fatherMethod(data); console.log('调用父组件方法') } } };

2.父组件使用v-bind绑定一个变量(v-bind:变量名=”值”),子组件用props接收(与created同级)

  
    这是父组件
    
  


import child from "@/components/child";
export default {
  components: { child },
  data() {
    return {};
  },
  methods: {
    parentHandler() {
      console.log("这是父组件的方法");
    },
  },
};
  
    这是子组件
    
  


export default {
  props: {
    parentHandler: {
      type: Function,
      default: () => {
        return Function;
      },
    },
    //parentHandler: {
    //   type: Object,
    //   default: () => {
    //     return {}
    //   },
    //},
    // parentHandler: {
    //   type: Boolean,
    //   default: true,
    // },
    // parentHandler: {
    //   type: Array,
    //   default: () => {
    //     return []
    //   },
    // },
    // parentHandler: {
    //   type: String,
    //   default: '',
    // },
  },
  methods: {
    handler() {
      this.parentHandler();
    },
  },
};

3.使用$refs传值

  
    

这是父组件

这是父组件中引用的子组件

//子组件地址(仅供参考),具体以实际项目目录地址为准 import child from "./Child.vue"; export default { components: { child: child }, data() { return {}; }, methods: { // 向子组件传值 setChildInfo() { this.$refs.child.cInfo = "c2"; //this.$refs.child.open("c2"); } } };
  
    

收到父组件数据:{{ cInfo }}

export default { data() { return { cInfo: "c1" }; }, methods: { //open(data) { // console.log(data); //}, }, };

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/40f0328bee.html