本文共 3283 字,大约阅读时间需要 10 分钟。
在 Vue.js 开发中,组件间的数据传递是日常开发中常见的操作。本文将详细介绍几种常用的数据传递方式,包括父传子、子传父、兄弟组件传参、Vuex、localStorage、sessionStorage等方法。
{{ msg }}
{{ sonMsg }}
子组件接收到内容:{{ psMsg }}
{{ msg }}
{{ sonMsg }}
子组件接收到内容:{{ psMsg }}
import Vue from 'vue'export default new Vue()
// 发送数据Bus.$emit('msg', this.oneMsg)
// 接收数据Bus.$on('msg', (data) => { this.twoMsg = data})
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]})
提交
姓名: {{ item.name }}
年龄: {{ item.age }}岁
高度: {{ item.height }}m
姓名: {{ item.name }}
年龄: {{ item.age }}岁
重量: {{ item.height }}
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')
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() }})
methods: { insurance(id) { this.$router.push({ path: `/particulars/${id}` }) }}
const fn = new Promise((resolve, reject) => { setTimeout(() => { reject('ok') }, 1000)})fn.then().catch(console.log)
this.$router.push({ path: '/xxx', query: { id: id }})// 接收参数this.$route.query.id
this.$router.push({ name: 'xxx', params: { id: id }})// 接收参数this.$route.params.id
...
my-con: {{ sonMsg }}
my-con2: {{ sonMsg }}
通过以上方法,可以在 Vue.js 应用中灵活地实现组件间的数据传递。根据具体需求选择最适合的传递方式,以确保应用的高效性和可维护性。
转载地址:http://qxxg.baihongyu.com/