组件传值方式

组件传值

方式一:事件传值

利用this.$emit() 实用 子 -> 父 组件传值,子组件向父级抛出一个事件,父组件来监听该事件

// 子组件 Child.vue
methods: {
    clickEvent() {
        this.$emit('clickEvent', '我被点击了');
    }
}
<!--父组件 HTML-->
<template>
  <div>
    <Child @clickEvent="clickEvent"></Child>
  </div>
</template>
// 父组件
methods: {
    clickEvent(e) {
        console.log(e)  // '我被点击了'
    }
}

 

方式二:属性传值

利用props 实用 父 -> 子 组件传值,子组件创建一个属性,父组件在调用子组件时传入属性值

 

复制代码
// 子组件
export default {
  props: {
      name: {
          type: String,
          default: ''
      }
  }
}
复制代码
<!--父组件 HTML-->
<template>
  <div>
    <Child name="xxx"></Child>
  </div>
</template>

 

方式三:URL动态路由

通过路由跳转传值,适用于需要路由跳转的情况

// router -> index.js
const routes = [
  {
    path: '/url/:id',
    name: "URLDemo",
    component: URLDemo
  }
]

传值方式:

this.$router.push('/user/xxx');

获取传递过来的值:

this.route.params

 

方式四:URL命名路由传值

通过路由跳转传值,适用于需要路由跳转的情况,并且参数不在URL路径上显示

// router -> index.js
const routes = [
  {
    path: '/url',
    name: "URLDemo",
    component: URLDemo
  }
]

传值方式:

this.$router.push({
    name: 'URLDemo',
    params: {
        key: value
    }
});

获取传递过来的值:

this.route.params  // {"key":"value"}

 

方式五:URL query方式

通过路由跳转传值,适用于需要路由跳转的情况,并且参数较多

// router -> index.js
const routes = [
  {
    path: '/url',
    name: "URLDemo",
    component: URLDemo
  }
]

传值方式:

this.$router.push({
    path: 'URLDemo',
    query: {
        key: value
    }
});

获取传递过来的值:

this.route.query  // {"key":"value"}

 

方式六:ref方式

利用this.$refs 获取 子组件 的值或方法

 

<!--父组件 HTML-->
<template>
  <div>
    <Child ref="child"></Child>
  </div>
</template>

获取子组件的值:

this.$refs.child.xxx  // xxx可以是子组件的方法名或变量名

 

方式七:$parent方式

利用this.$parent 获取 父组件 的值或方法

 

this.$parent.xxx  // xxx可以是父组件的方法名或变量名

 

方式八:通知传值(广播传值)

1. 新建一个.js文件,创建一个vue对象并导出

import Vue from 'vue'

let vueEvent = new Vue();

export default vueEvent;

2. 在需要传递值的组件中导入并使用,使用$emit()抛出事件和值

// 组件一
import vueEvents from '../model/vueEvent'

methods: {
    commit() {
        vueEvents.$emit('demoEvent', '我是Demo组件的值')
    }
}

3. 在需要接收值的组件中导入并使用,使用$on()监听事件

// 组件二
import vueEvents from '../model/vueEvent'

created() {
    vueEvents.$on('demoEvent', e => {
        this.value = e  // e == '我是Demo组件的值'
    })
}

 

方式九:localStorage方法

window.localStorage.setItem('key',value);  // 保存值
window.localStorage.getItem('key');  // 获取值

 

作者:my-wl

出处:https://www.cnblogs.com/my-wl/p/14485076.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   梦羽微澜  阅读(189)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示