vue 组件之间通信的方式

这篇具有很好参考价值的文章主要介绍了vue 组件之间通信的方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.父向子版  父组件设置自定义属性 子组件props接收

//父组件环境下
<my-demo :自定义属性名字="要传递的具体值"></my-demo>
//子组件
export default{
props:[自定义属性名字]
}

2.子向父版 父组件设置自定义方法并绑定接收的方法 子组件触发方法

//父组件环境下
<my-demo @自定义方法="绑定的方法"></my-demo>
export default{
    methods:{
        绑定的方法(v1){
            console.log(v1)//abb1
        }
    }
}
//子组件
export default{
  methods:{
    xxx(){
        this.$emit('自定义方法','abb1')
        //可以传多个参数
    }
  }
}

 3.全局事件总线  

//1.创建bus.js 文件 
// bus.js文件内容
import Vue from 'vue'
// export default new Vue()
const Bus = new Vue()
export default Bus

//2.在main.js中使用
import Bus from './utils/bus' // 这是我的路径,正确引用你们的路径

//3.在需要的地方触发事件
this.$bus.$emit('allclear',type)

//4. 接收事件的地方接收并下一步处理
 mounted() {
    this.$bus.$on('allclear', (type) => {
      // console.log(type)
      if (type === this.fathercomname) {
        if (this.value) {
          this.value = undefined
        }
      }
    })
}

4.Vuex

用这个的话首先要装包或者创建工程的时候选择这个选项手脚架会给你装好

//新建store 文件
//文件内容
import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
Vue.use(Vuex)

//模块化
const store = new Vuex.Store({
  modules: {
    app,
  },
  getters
})

export default store


//模块化文件内容 具体的看自己的功能哈
import Cookies from 'js-cookie'

//这个模块是用来检测屏幕视窗的
const state = {
  sidebar: {
    opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
    withoutAnimation: false
  },
  device: 'desktop'
}

const mutations = {
  TOGGLE_SIDEBAR: state => {
    state.sidebar.opened = !state.sidebar.opened
    state.sidebar.withoutAnimation = false
    if (state.sidebar.opened) {
      Cookies.set('sidebarStatus', 1)
    } else {
      Cookies.set('sidebarStatus', 0)
    }
  },
  CLOSE_SIDEBAR: (state, withoutAnimation) => {
    Cookies.set('sidebarStatus', 0)
    state.sidebar.opened = false
    state.sidebar.withoutAnimation = withoutAnimation
  },
  TOGGLE_DEVICE: (state, device) => {
    state.device = device
  }
}

const actions = {
  toggleSideBar({ commit }) {
    commit('TOGGLE_SIDEBAR')
  },
  closeSideBar({ commit }, { withoutAnimation }) {
    commit('CLOSE_SIDEBAR', withoutAnimation)
  },
  toggleDevice({ commit }, device) {
    commit('TOGGLE_DEVICE', device)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}


//getter的内容
const getters = {
  sidebar: state => state.app.sidebar,
  device: state => state.app.device,
}
export default getters



//在main.js导入
import store from './store'


//在对应组件中使用
import { mapGetters } from "vuex";
 computed: {
        ...mapGetters(['device']),
    },

5.路由

抽象一点说路由也算通信方式的一种吧 这种跨组件跨页面 路由传参 

//例子 
this.$router.push({
        name: "GanttChart",
        params: {
          id: id,
          business_file: business_file,
        },
      });

6.浏览器资源传参

有cookie  localstrage 之类的 总归不过是是get set 文章来源地址https://www.toymoban.com/news/detail-802015.html

import Cookies from 'js-cookie'

//名字
const TokenKey = 'xxxxx'

//向外导出一个获取的方法
export function getToken() {
  return Cookies.get(TokenKey)
}

//向外导出一个设置的方法
export function setToken(token) {
  //过期时间跟着后台设置的时间 后台给的是一个时间戳 算了一下是当前时间30日后过期 
  return Cookies.set(TokenKey, token,{expires:30})
}

//向外导出一个移除的方法
export function removeToken() {
  return Cookies.remove(TokenKey)
}

到了这里,关于vue 组件之间通信的方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序父子组件之间通信的 3 种方式

    父子组件之间通信的 3 种方式 ① 属性绑定 ⚫ 用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容的数据 ② 事件绑定 ⚫ 用于子组件向父组件传递数据,可以传递任意数据 ③ 获取组件实例 ⚫ 父组件还可以通过 this.selectComponent() 获取子组件实例对象,这样就可以直

    2024年02月09日
    浏览(44)
  • 浅谈Vue组件之间的通信

    父子组件通信 : 父组件向子组件传递数据 :可以通过 props 属性向子组件传递数据。 子组件向父组件传递数据 :可以通过 $emit 方法触发一个自定义事件,并在父组件中监听这个事件。 在父组件中: 兄弟组件通信 : 可以使用共同的父组件作为中介,父组件通过 props 向子组

    2024年02月22日
    浏览(39)
  • Vue兄弟组件之间的通信:

    思路: 通过中间人父组件进行通信; 子组件先传给父组件,然后父组件再传给另一个子组件;  结果:   注意: console.log(res.json())的结果是promise对象; 图示: 要通过res接收res.json()结果才是data数据;  结果:   子组件传给父组件的data,是一个临时变量,如果父组件想用,

    2024年02月11日
    浏览(46)
  • VUE 父子组件、兄弟组件 之间通信 最强详解

    目录 1. 父组件 调用 子组件 内参数/方法 1.1 通过 ref 调用/获取 子组件内参数/方法 2. 子组件 调用 父组件 内参数/方法 2.1 通过 emit 调用 父组件方法 2.2 通过 props 调用 父组件方法/参数 2.3 通过 this.$parent 调用 父组件方法/参数 3. 兄弟组件 通信 3.1 通过 bus 进行 兄弟组件 通信

    2024年02月05日
    浏览(56)
  • Vue3 组件之间的通信

    经过前面几章的阅读,相信开发者已经可以搭建一个基础的 Vue 3 项目了! 但实际业务开发过程中,还会遇到一些组件之间的通信问题,父子组件通信、兄弟组件通信、爷孙组件通信,还有一些全局通信的场景。 这一章就按使用场景来划分对应的章节吧,在什么场景下遇到问

    2023年04月08日
    浏览(43)
  • vue组件之间的通信都有哪些?

    vue组件之间的通信都有哪些? 父子组件通信: Props:父组件通过props将数据传递给子组件,子组件通过props接收父组件传递的数据。 Events:子组件通过$emit触发事件,并将数据传递给父组件,父组件通过监听子组件的事件来接收数据。 兄弟组件通信: 共同的父组件作为中介:

    2024年02月06日
    浏览(47)
  • 【Vue3】3-3 : 组件之间是如何进行互相通信的

    本书目录:点击进入 一、组件之间为什么要做通信 二、组件之间通信方式 2.1、父传子:由传递属性实现 stage 1:申明 (即定义) stage 2:注册 stage 3:使用 【示例】:父组件将 title 和 count 传递给子组件 (普通数据 和 响应式数据的传递) >  代码  >  效果 2.2、子传父

    2024年01月17日
    浏览(35)
  • vue父子组件之间的传参的几种方式

    这是最常用的一种方式。通过props选项,在父组件中传递数据给子组件。在子组件中使用props声明该属性,就可以访问到父组件传递过来的数据了。 子组件向父组件传递数据的方式。在子组件中使用emit方法触发一个自定义事件,并通过参数传递数据。在父组件中监听这个事件

    2023年04月24日
    浏览(67)
  • 了解JS三种实时通信方式——Eventsource、websocket与socket.io之间的差异和优缺点

    EventSource EventSource 是一种轻量级的 API,用于获取来自服务器的实时事件。它是 WebSockets 的替代方案,因为它比 WebSockets 更简单,更适合处理服务器向客户端发送数据的情况。使用 EventSource ,只有服务器能够发送消息,所以它更安全。但是,它不支持双向通信或客户端发送消

    2024年02月08日
    浏览(48)
  • 史上最全的vue中组件之间的传值方式

    重中之重的就是组件之间数据传递的几种方式 Vue2最常见的11种组件间的通讯方式 props $emit / v-on .sync v-model ref(获取子组件的属性和调用子组件方法)本质就是获取到子组件的this $children / $parent(获取子组件(不包括顺孙组件)的数组 / 获取父组件的this) $attrs / $listeners($

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包