vue父子组件传值的三种完整方式

vue父子组件传值的三种完整方式非父子组件之间传值 需要定义个公共的公共实例文件 bus js 作为中间仓库来传值 不然路由组件之间达不到传值的效果

vue常见的组件传值方式:

  • 父传子
  • 子传父
  • 非父子传值 | 兄弟传值
  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请放在最前面) props: ["inputName"], data() } </script> 
  1. 子传父
    子组件

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

父组件

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

非父子组件之间传值,需要定义个公共的公共实例文件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 () { 
    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 () { 
    // 用$on事件来接收参数 Bus.$on('val', elementValue => { 
    console.log(elementValue) vm.name = elementValue }) }, methods: { 
    getData () { 
    this.name++ } } } </script> 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2026年3月17日 上午10:25
下一篇 2026年3月17日 上午10:26


相关推荐

  • windows添加路由命令route add_windows添加路由命令route add

    windows添加路由命令route add_windows添加路由命令route addLinux下routeadd命令添加路由列表

    2022年8月11日
    5
  • python深浅拷贝

    python深浅拷贝Python 中 对象的赋值 拷贝 深 浅拷贝 之间是有差异的 如果使用的时候不注意 就可能产生意外的结果 下面本文就通过简单的例子介绍一下这些概念之间的差别 要想了解深浅拷贝 首先要知道什么是深浅拷贝 深拷贝是对于一个对象所有层次的拷贝 递归 copy deepcopy nbsp nbsp nbsp 浅拷贝是对于一个对象的顶层拷贝 通俗的理解是 拷贝了引用 并没有拷贝内容 copy cop

    2026年2月1日
    3
  • java毕业设计_创意礼品网

    java毕业设计_创意礼品网创意礼品网 mysql 数据库创建语句创意礼品网 oracle 数据库创建语句创意礼品网 sqlserver 数据库创建语句创意礼品网 spring springMVC hibernate 框架对象 javaBean pojo 设计创意礼品网 spring springMVC mybatis 框架对象 javaBean pojo 设计创意礼品网登录注册界面创意礼品网 mysql 数据库版本源码 超级管理员

    2026年3月20日
    2
  • Random类中的nextInt()函数「建议收藏」

    Random类中的nextInt()函数「建议收藏」Random的两个nextInt函数:1.Random的nextInt()是无参函数,用来随机生成-~范围之间的整数;2.Random的nextInt(intn)函数用来随机生成【0,n)之间的整数,切记是前闭后开;

    2022年7月21日
    22
  • 数据库端口号怎么修改_sqlserver查看sa密码

    数据库端口号怎么修改_sqlserver查看sa密码sqlserver端口如果出现问题,会直接影响sqlserver的登录,下面就教您sqlserver端口的更改方法,供您参考,让您不再为sqlserver端口问题而头疼。今天遇到一个问题,sqlserver无法登陆,到Services里看,服务没有起来。但是在启动Service时遇到问题说无法启动。去AdministrativeTools->EventViewer中查看了一下,…

    2022年8月31日
    5
  • 智能优化算法回顾

    智能优化算法回顾mark一下,感谢作者分享。当年在毕设的时候研究智能优化算法,工作中偶尔也会写些demo,今天看到这篇文章,赶紧收藏。优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,模拟退火、遗传算法以及禁忌搜索称作指导性搜索法。而神经网络,混沌搜索则属于系统动态演化方法。梯度为基础的传统优化算法具有较高的计算效率、较强的可靠性、比较成熟等优点,是一类最重…

    2022年5月23日
    37

发表回复

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

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