Vue子组件调用父组件的方法及传值「建议收藏」

Vue子组件调用父组件的方法及传值「建议收藏」//父组件<template><divclass=”home”><HelloWorldref=”mychild”></HelloWorld><div@click=”clickParent”>clickme</div></div></template><script>importHelloWorldfrom’@/components/HelloW

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、通过$ref的方式

//父组件
<template>
  <div class="home">
    <myBox ref="myBox"></myBox>
    <div @click="handelClick">click me</div>
  </div>
</template>
<script>
  import myBox from '@/components/myBox.vue'
  export default { 
   
    name: 'home',
    components: { 
   
      myBox
    },
    methods: { 
   
      handelClick() { 
   
        this.$refs.myBox.init("传递的值");
      }
    }
  }
</script>


//子组件
<template>
  <div class="myBox">
    <h1>我是子组件</h1>
  </div>
</template>
<script>
  export default { 
   
    name: 'myBox',
    methods: { 
   
      init(val) { 
   
        console.log(val)
      }
    }
  }
</script>

二、通过props的方式

// 父组件
<template>
  <div>
    <h1>父组件</h1>
    <myBox :dataFrom="data"></myBox>
  </div>
</template>
 
<script>
  import myBox from '@/components/myBox.vue'
  export default { 
   
    name: 'home',
    components: { 
   
      myBox
    },
    data() { 
   
      return { 
   
        data:"传递的值"
      }
    }
  }
</script>
// 子组件
<template>
  <div>
    <h1>子组件</h1>
    <p>下面是父组件传过来的数据</p>
    <p>{ 
   { 
   fromData}}</p>
  </div>
</template>
  
<script>
export default { 
   
   props: { 
   
    fromData: { 
   
      type: String,
      default: 'hello world'
    }
  }
  data () { 
   
    return { 
   
  
    };
  }
}
</script>

三、用$emit向父组件触发一个事件,父组件监听这个事件

//父组件
<template>
  <div>
    <myBox @fatherMethod="fatherMethod"></myBox>
  </div>
</template>
<script>
  import myBox from '@/components/myBox';
  export default { 
   
    components: { 
   
      child
    },
    methods: { 
   
      fatherMethod() { 
   
        console.log('测试');
      }
    }
  };
</script>
 //子组件
<template>
  <div>
    <button @click="childMethod()">点击</button>
  </div>
</template>
<script>
  export default { 
   
    methods: { 
   
      childMethod() { 
   
        this.$emit('fatherMethod');
      }
    }
  };
</script>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186856.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号