浅谈Vue父子组件和非父子组件传值问题

 更新时间:2017年08月22日 11:33:27   作者:wl_xiaowangzi  
本篇文章主要介绍了浅谈Vue父子组件和非父子组件传值问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

本文介绍了浅谈Vue父子组件和非父子组件传值问题,分享给大家,具体如下:

1.如何创建组件

1.新建一个组件,如:在goods文件夹下新建goodsList.vue

<template>
  <div class='tmpl'>
    goodsList组件
  </div>
</template>

<style>

</style>

<script>

  export default {
    data() {
      return{}
    },
    created() {

    },
    methods: {

    },
    components:{

    }
  }
</script>

2.在main.js中引入 import goodsList from 'goods/goodsList.vue'

3.在main.js中创建路由对象,创建路由规则

const router = new VerRouter({
  routes[
    {path:/goods/goodsList,component:goodsList}
  ]
})

4.在主组件App.vue中设置 <router-link to="/goods/goodsList">商品列表</router-link>

系统会自动帮我们把这个标签转化为a标签href="#/goods/goodsList" rel="external nofollow"

2.如何在父组件中嵌入子组件

1.新建一个子组件 subcomponent.vue

2.在父组件中引入 import subComponent from '../subComponent/subcomponent.vue'

3.在父组件中注册 components

 export default {
    components:{
      //如果属性名和值相同,可以简写
      subComponent
    }
  }

4.在父组件指定位置写一个自定义标签<subComponent></subComponent>

3.如何实现父子组件之间的传值

1.父组件向子组件传值

1.在子组件中设置props:['commentId'] //子组件用来接收父组件传递过来值的属性名称

2.在父组件的自定义子组件标签中设置<subComponent :commentId="this.$route.params.photoId"></subComponent>//父组件传递值给子组件

2.子组件向父组件传值

1.在父组件的自定义标签中设置一个自定义函数<subComponent v-on:paramsChange="getSubComponentParams"></subComponent>

2.在父组件的methods中声明函数

  getSubComponentParams(params){
  //接收来自子组件的参数params
    this.myParams = params;
  }

3.在子组件中传递参数

  /**
  * 参数1:要触发的事件名称
  * 参数2:传递的值
  */
  this.$emit('paramsChange',this.params)

如何实现非父子组件的传值

非父子组件中两个组件没有联系,不能使用this来传值,所以我们只能通过第三方的变量,来达到传值的效果,这个第三方变量就是:

使用一个空的 Vue 实例作为中央事件总线

传值步骤:

1.创建一个公用js组件 在组件内导出一个空的Vue实例,比如新建一个commonvue.js文件

import Vue from 'vue'

export default new Vue() //es6的写法
/**
 * 相当于下面这样写
 * 
 * const bus = new Vue()
 * module.exports = bus
 */

2.在组件A中传递参数

bus.$emit('goodsCount',this.myCount)

3.在组件B中接收参数

bus.$on('goodsCount',(goodsCount)=>{
   const oldVal = $("#badgeId").text()

   const lastVal = parseInt(oldVal) + goodsCount
   console.log(lastVal)
   $("#badgeId").text(lastVal)
 })

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue3封装数字滚动组件的实现示例

    vue3封装数字滚动组件的实现示例

    本文主要介绍了vue3封装数字滚动组件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Vue引入Stylus知识点总结

    Vue引入Stylus知识点总结

    在本篇文章里小编给各位整理的是一篇关于Vue引入Stylus知识点总结内容,有需要的朋友们可以学习参考下。
    2020-01-01
  • vue3+ts深入组件Props实例详解

    vue3+ts深入组件Props实例详解

    Props是组件之间进行数据传递的一种方式,可以将数据从父组件传递给子组件,这篇文章主要介绍了vue3+ts深入组件Props的实例详解,需要的朋友可以参考下
    2023-09-09
  • VUE中this.$router.push点了后hash地址改变了页面不跳转

    VUE中this.$router.push点了后hash地址改变了页面不跳转

    本文主要介绍了VUE中this.$router.push点了后hash地址改变了页面不跳转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • 浅谈Vue页面级缓存解决方案feb-alive (下)

    浅谈Vue页面级缓存解决方案feb-alive (下)

    这篇文章主要介绍了浅谈Vue页面级缓存解决方案feb-alive(下),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue 项目代码拆分的方案

    vue 项目代码拆分的方案

    这篇文章主要介绍了vue 项目代码拆分的方案,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-03-03
  • Vue项目动态加载图片正确写法

    Vue项目动态加载图片正确写法

    最近做项目的时候遇到了动态加载图片的需求,所以这里给大家总结下,这篇文章主要给大家介绍了关于Vue项目动态加载图片的正确写法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • vue中使用element组件时事件想要传递其他参数的问题

    vue中使用element组件时事件想要传递其他参数的问题

    这篇文章主要介绍了vue中使用element组件时事件想要传递其他参数的问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • vue实现个人信息查看和密码修改功能

    vue实现个人信息查看和密码修改功能

    本文通过实例代码给大家介绍了vue实现个人信息查看和密码修改功能,文中给大家补充介绍了vue实现密码显示隐藏切换功能,非常不错,具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
    2018-05-05
  • Vuex实现简单购物车

    Vuex实现简单购物车

    这篇文章主要为大家详细介绍了Vuex实现简单购物车,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01

最新评论