Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值

Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值Vue2.0传值方式:在Vue的框架开发的项目过程中,经常会用到组件来管理不同的功能,有一些公共的组件会被提取出来。这时必然会产生一些疑问和需求?比如一个组件调用另一个组件作为自己的子组件,那么我们如何进行给子组件进行传值呢?如果是电商网站系统的开发,还会涉及到购物车的选项,这时候就会涉及到非父子组件传值的情况。当然你也可以用Vuex状态管理工具来实现,这部分我们后续会单独介绍。先给大家介绍Vue常见的三种传值方式

大家好,又见面了,我是你们的朋友全栈君。

Vue2.0 传值方式:

在Vue的框架开发的项目过程中,经常会用到组件来管理不同的功能,有一些公共的组件会被提取出来。这时必然会产生一些疑问和需求?比如一个组件调用另一个组件作为自己的子组件,那么我们如何进行给子组件进行传值呢?如果是电商网站系统的开发,还会涉及到购物车的选项,这时候就会涉及到非父子组件传值的情况。当然你也可以用Vuex状态管理工具来实现,这部分我们后续会单独介绍。我先给大家介绍Vue开发中常用的三种传值方式。

Vue常用的三种传值方式有:

  • 父传子

  • 子传父

  • 非父子传值


引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息,如下图所示:

这里写图片描述

接下来,我们通过实例来看可能会更明白一些:

1. 父组件向子组件进行传值

这里写图片描述

父组件:

<template>
  <div>
    父组件:
    <input type="text" v-model="name">
    <br>
    <br>
    <!-- 引入子组件 -->
    <child :inputName="name"></child>
  </div>
</template>
<script> import child from './child' export default { components: { child }, data () { return { name: '' } } } </script>

子组件:

<template> <div> 子组件: <span>{ 
   { 
   inputName}}</span> </div> </template> <script> export default { // 接受父组件的值 props: { inputName: String, required: true } } </script>

2. 子组件向父组件传值

这里写图片描述

子组件:

<template> <div> 子组件: <span>{ 
   { 
   childValue}}</span> <!-- 定义一个子组件传值的方法 --> <input type="button" value="点击触发" @click="childClick"> </div> </template> <script> export default { data () { return { childValue: '我是子组件的数据' } }, methods: { childClick () { // childByValue是在父组件on监听的方法 // 第二个参数this.childValue是需要传的值 this.$emit('childByValue', this.childValue) } } } </script>

父组件:

<template> <div> 父组件: <span>{ 
   { 
   name}}</span> <br> <br> <!-- 引入子组件 定义一个on的方法监听子组件的状态--> <child v-on:childByValue="childByValue"></child> </div> </template> <script> import child from './child' export default { components: { child }, data () { return { name: '' } }, methods: { childByValue: function (childValue) { 
      // childValue就是子组件传过来的值 this.name = childValue } } } </script>

3. 非父子组件进行传值

非父子组件之间传值,需要定义个公共的公共实例文件bus.js,作为中间仓库来传值,不然路由组件之间达不到传值的效果。

公共bus.js

//bus.js
import Vue from 'vue'
export default new Vue()

组件A:

<template> <div> A组件: <span>{ 
   { 
   elementValue}}</span> <input type="button" value="点击触发" @click="elementByValue"> </div> </template> <script> // 引入公共的bug,来做为中间传达的工具 import Bus from './bus.js' export default { data () { return { elementValue: 4 } }, methods: { elementByValue: function () { 
      Bus.$emit('val', this.elementValue) } } } </script>

组件B:

<template> <div> B组件: <input type="button" value="点击触发" @click="getData"> <span>{ 
   { 
   name}}</span> </div> </template> <script> import Bus from './bus.js' export default { data () { return { name: 0 } }, mounted: function () { 
      var vm = this // 用$on事件来接收参数 Bus.$on('val', (data) => { console.log(data) vm.name = data }) }, methods: { getData: function () { 
      this.name++ } } } </script>

☺ Vue三种常用的传值方式就介绍完了,如果有什么不明白的,可以在评论区留言哦!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145233.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SwipeRefreshLayout实现上滑加载更多[通俗易懂]

    SwipeRefreshLayout实现上滑加载更多[通俗易懂]SwipeRefreshLayout实现上滑加载更多在我们的项目中,需要用到许多下拉刷新和上滑加载的操作,不说什么没用的,直接来介绍SwipeRefreshLayout的扩展用法。后面会简单的介绍SwipeRefreshLayout的用法。在这里我们对谷歌官方的控件进行拓展,使得SwipeRefreshLayout具有上滑加载更多的功能。下面是正文首先我们新建文件(文件名自己定义,在…

    2022年6月25日
    21
  • 【值得收藏】一份非常完整的Mysql规范

    做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!本文转载在,在原有内容基础上结合阿里巴巴Java开发手册中Mysql数据库章节的介绍,加上自己的理解和说明,整理而成。涉及的内容较多,建议收藏后仔细阅读!一、数据库命名规范数据库的表名、字段名必须使用小写字母或数字(不要使用驼峰哦),并禁止出现数字开头,禁止两个下划线中间只出现数字。正例:aliyun _ …

    2022年2月28日
    33
  • 目前还存活的多个电驴下载站点!电驴达人收藏[通俗易懂]

    目前还存活的多个电驴下载站点!电驴达人收藏[通俗易懂]目前还存活的多个电驴下载站点!电驴达人收藏(2011更新) 0、http://www.emule-project.net/这个不用说了,emule官方,没有它就没有下面的所有一切,德国人开的。只提供官方版emule软件,没有资源下载。秉承理念“eMule是完全免费的,它也决不包含广告软件、间谍和流氓软件。我们之所以创造eMule是为了快乐和知识,而不…

    2022年7月15日
    53
  • 高效开发[通俗易懂]

    高效开发[通俗易懂]高效开发

    2022年4月22日
    36
  • 微端传奇怎么架设_架设

    微端传奇怎么架设_架设1.首下载gmqd引擎包。解压出来,找到里面(微端服务器),里面有两个文件夹,一个是微端程序,一个是微端网关,接下来,把微端程序文件里面的四个文件,复制到微端服务器电脑上面的,热血传奇客户端里面}。见下图2.然后运行updateserver.exe这个程序,等运行完后,看看里面是否加载到补丁文件3.如果都加载到客户端里面的补丁文件。那么微端程序已经运行成功了,要注意的是,PAK格式补丁。如果你的服有要用到PAK格式补丁,那么就要微端程序里面设置PAK补丁密码。见下图4.记住只要在明文密码处,输入PAK补

    2022年10月6日
    0
  • 库存系统难破题?且看京东到家如何破「建议收藏」

    库存系统难破题?且看京东到家如何破「建议收藏」京东到家库存系统架构设计目前,京东到家库存系统经历两年多的线上考验与技术迭代,现服务着万级商家十万级店铺的规模,需求的变更与技术演进,我们是如何做到系统的稳定性与高可用呢,下图会给你揭晓答案(通过强大的基础服务平台让应用、JVM、Docker、物理机所有健康指标一目了然,7*24小时智能监控告警让开发无须一直盯着监控,另外数据与业务相辅相成,用数据验证业务需求,迭代业务需求,让业务需求都尽可能

    2022年5月16日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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