博客
关于我
史上最全Vue的组件传值
阅读量:366 次
发布时间:2019-03-05

本文共 3283 字,大约阅读时间需要 10 分钟。

Vue.js 组件间数据传递方法大全

在 Vue.js 开发中,组件间的数据传递是日常开发中常见的操作。本文将详细介绍几种常用的数据传递方式,包括父传子、子传父、兄弟组件传参、Vuex、localStorage、sessionStorage等方法。

1. 父传子如何传递

1.1 父组件传递数据

1.2 子组件接收数据

2. 子传父如何传递

2.1 父组件绑定事件

2.2 子组件触发事件

3. Vue兄弟组件传参

3.1 使用 EventBus

3.1.1 创建 EventBus

import Vue from 'vue'export default new Vue()

3.1.2 发送数据

// 发送数据Bus.$emit('msg', this.oneMsg)

3.1.3 接收数据

// 接收数据Bus.$on('msg', (data) => {  this.twoMsg = data})

4. Vuex 传参

4.1 配置 Vuex

import Vuex from 'vuex'import VuexPersistence from 'vuex-persist'const vuexLocal = new VuexPersistence({  storage: window.localStorage})Vue.use(Vuex)export default new Vuex.Store({  state: {    user: {},    token: ''  },  mutations: {    setlong(state, user) {      state.user = user      state.token = user.token    }  },  plugins: [vuexLocal.plugin]})

4.2 使用 Vuex

5. localStorage 传值

5.1 存储数据

5.2 恢复数据

6. sessionStorage 传值

6.1 存储数据

6.2 恢复数据

7. 全局变量传值

7.1 main.js 配置

import Vue from 'vue'import App from './App.vue'import router from './router'import store from './store'Vue.config.productionTip = falseimport Component from '@/components/commpont.vue'Vue.component('Commpont', Component)new Vue({  router,  store,  render: h => h(App)}).$mount('#app')

7.2 组件使用

8. 路由传参

8.1 路由配置

import { createRouter, createWebHistory } from 'vue-router'export default createRouter({  history: createWebHistory(),  routes: [    { path: '/Order', name: 'Order', component: () => import('@/views/Order.vue') },    { path: '/login', name: 'login', component: () => import('@/views/login.vue') }  ]})router.beforeEach((to, from, next) => {  if (to.path === '/Order') {    if (!store.state.name) {      next('/login')    } else {      next()    }  } else {    next()  }})

8.2 方法使用

methods: {  insurance(id) {    this.$router.push({      path: `/particulars/${id}`    })  }}

9. Promise 传参

const fn = new Promise((resolve, reject) => {  setTimeout(() => {    reject('ok')  }, 1000)})fn.then().catch(console.log)

10. query 和 params 传参

10.1 query 方式

this.$router.push({  path: '/xxx',  query: {    id: id  }})// 接收参数this.$route.query.id

10.2 params 方式

this.$router.push({  name: 'xxx',  params: {    id: id  }})// 接收参数this.$route.params.id

11. $refs 传值

11.1 父组件引用

11.2 子组件方法

12. $parent 传值

13. $child 传值

13.1 父组件引用

13.2 子组件方法

13.3 子组件另一个实例

通过以上方法,可以在 Vue.js 应用中灵活地实现组件间的数据传递。根据具体需求选择最适合的传递方式,以确保应用的高效性和可维护性。

转载地址:http://qxxg.baihongyu.com/

你可能感兴趣的文章
【活动】直播揭秘<如何从0开发HarmonyOS硬件>
查看>>
Unity平台 | 快速集成华为性能管理服务
查看>>
详细实例教程!集成华为虚假用户检测,防范虚假恶意流量
查看>>
对模拟器虚假设备识别能力提升15%!每日清理大师App集成系统完整性检测
查看>>
使用Power BI构建数据仓库与BI方案
查看>>
pytest封神之路第二步 132个命令行参数用法
查看>>
Django认证系统并不鸡肋反而很重要
查看>>
快用Django REST framework写写API吧
查看>>
tep用户手册帮你从unittest过渡到pytest
查看>>
12张图打开JMeter体系结构全局视角
查看>>
Spring Boot 2.x基础教程:构建RESTful API与单元测试
查看>>
[UWP 自定义控件]了解模板化控件(1):基础知识
查看>>
UWP 自定义控件:了解模板化控件 系列文章
查看>>
[UWP]从头开始创建并发布一个番茄钟
查看>>
在 Azure 上执行一些简单的 python 工作
查看>>
WinUI 3 Preview 3 发布了,再一次试试它的性能
查看>>
使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)
查看>>
List数组排序
查看>>
VMware vSphere 离线虚拟机安装 BIND 9
查看>>
说说第一份工作
查看>>