iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用Vue实现组件化通讯
  • 140
分享到

如何使用Vue实现组件化通讯

2023-07-04 11:07:24 140人浏览 八月长安
摘要

这篇文章主要介绍了如何使用Vue实现组件化通讯的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Vue实现组件化通讯文章都会有所收获,下面我们一起来看看吧。1. Vue的组成文件(.vue)分为三部分,分别

这篇文章主要介绍了如何使用Vue实现组件化通讯的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Vue实现组件化通讯文章都会有所收获,下面我们一起来看看吧。

1. Vue的组成文件(.vue)

分为三部分,分别对应html,js,CSS

<template></template><script></script><style></style>

2. Vue的生命周期函数

  1. beforeCreate() 创建数据之前

  2. created() 创建数据 我们在这里的得到我们在data里面创建的数据

  3. beforeMount() // Dom渲染完成前

  4. mounted() //Dom渲染完成

  5. beforeUpdate() // 更新视图 在beforeUpdate触发时,视图已经更新完成

  6. Updated() //更新数据调用的函数、。

<div id='app'> <p>{{msg}}</p> <input type='text' v-model='msg'></div>var app = new Vue({ el: '#app', data() {  return {   msg: 1  } }, beforeCreate() {  console.log('beforeCreate', this.msg); //beforeCreate undefined  console.log('beforeCreate: ', document.getElementsByTagName('p')[0]) //beforeCreate <p>{{msg}}</p> }, created() {  // 创建数据  console.log('created', this.msg); //beforeCreate 1   console.log('created: ', document.getElementsByTagName('p')[0]) //beforeCreate <p>{{msg}}</p>  // 异步处理得到渲染的dom数据  setTimeout(() => {   this.msg = 100   console.log('nextTick', document.getElementsByTagName('p')[0])   }, 100)  // nextTick <p>100</p> }, beforeMount() {  console.log('beforeMount', this.msg) //beforeMount 1  console.log('beforeMount: ', document.getElementsByTagName('p')[0]) // beforeMount <p>{{msg}}</p> }, mounted() {  // 渲染dom  console.log('mounted', this.msg) //mounted 1  console.log('mounted: ', document.getElementsByTagName('p')[0]) //mounted <p>1</p> }, beforeUpdate() {  console.log('beforeUpdate', this.msg) //beforeUpdate 100  console.log('beforeUpdate: ', document.getElementsByTagName('p')[0]) //beforeUpdate <p>100</p> }, updated() {  console.log('updated', this.msg) // updated 1  console.log('updated: ', document.getElementsByTagName('p')[0]) // updated <p>100</p> }})

生命周期参考链接

3. export default

每一个模块都是自己的作用域,相应的属性来处理数据和函数

data(声明数据,可以是函数和属性)

类型:Object | Function

组件只接受函数

  // 对象的形式  export default{   data: {    a:1   }  }  // 函数的形式  export default{   data(){    return {     a: 1    }   }  }

methods(一些指令和其他属性的调用方法)

  1. 不要用箭头函数来写里面的函数

  2. this指向Vue的实例

 export default{  methods: {   plus() {    this.a++   }  } }

1、components (组件化定义)

类型: Object

自定义元素,增加代码的复用性

 // 当我们引用一个.vue文件的时候,就像使用这个文件来充当我们主体的一部分 <div>   <hello></hello>  </div> import hello from './hello.vue' export default {  components: {   hello  } }

2、computed(计算属性)

  1. 计算属性的结果会被缓存,依赖的数据发生变化才会重新渲染

  2. 注意计算属性和methods,watch的区别

{{this.total}} //[3,4]<button @click='add'>添加数据</button> //点击会更新this.total  export default { data: () => ({  a: 1,  b: [2,3] }), methods: {  add(){   this.b.push(8);  } }, computed: {  total(){   return this.b.map((item)=>{    return item+this.a   })  } }}

watch(监听对应的数据)

  1. 键值对。键是我们需要监督的数据,值是相应的回调函数

  2. 回调函数接受2个参数,新的值和旧的值(对于数组和对象不会出现旧值,对于简单的数据会出现旧值)

  3. 监听对象的内部值变化,需要添加deep:true(数组不用)

// 点击后相应的变化data(){  return {   a: 1,   b: [2,4,6],   c:{name:'hcc',age:22}  } },methods: {  add(){   this.a++   this.b.push(8)   this.c.name = 'yx'  } },watch: {  b: function(val, oldVal){    console.log('new', val) //[2,4,6,8]    console.log('new', oldVal) //[2,4,6,8]  },  a: function(val, oldVal){   console.log(val); //2   console.log(oldVal); //1  },  c:{   handler(val){    console.log(val); //{name: 'yx',age: 22}   }   }},

props(用于接受父组件传来的数据)

  1. 规定和接受父组件的数据

  2. 单向数据流,子组件不能修改传递过来的数据

  3. 对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态。

  4. 可以规定接受的数据类型和默认值,如果是对象和数组,默认值导出是一个函数

// 父组件<hello :fORMParent='num'></hello> //htmlcomponents: { hello},data(){ return {  num: 3 }}//子组件//1. 数组规定接受的数据props: ['hello']//2. 验证的方式props:{ hello: Number, hello: [String, Number], hello: {  type: Object,  default(){   return {message: 'hello'}  } }}

v-on和v-emit(子组件向父元素传递数据)

vm.$emit: 子元素向父元素定义讯号和传递数据

this.$emit('规定的讯号名称', '想传递给父元素的数据')

vm.$on: 监听讯号,并触发相应的函数(函数内部不用传参)

@'规定的讯号名称'='调用自己组件的方法并可以接受传递的参数'

// 子组件data () { return {  msg: 'Welcome to Your vue.js App' }},methods: { change(){  this.$emit('sendMsg',this.msg) //把msg传递给父组件 }}// 父组件// 引入子组件,并定义componentscomponents: { hello},methods: { show(msg){   // 这里接受子组件传递的参数  console.log(msg); }}<hello @sendMsg='show'></hello> // 这里不用传递参数,不然会覆盖子元素传递的参数

ref(用来获取dom和子组件)

  1. 可以用来操作dom<p ref="p">hello</p>

  2. 可以用来组件中的通讯

  3. 在组件中使用的this.refs是一个对象,包含了所有的绑定了的dom和子组件

// html  <h2 ref="myElement">这是一个dom元素</h2> //dom元素 <hello :propnum="propnum" :obj='d' @getson='getMsg' ref='child'></hello> // 子组件 >-- 组件中this.refs => {myElement: h2, child: VueComponent}// 运用(在父元素中调用子元素的方法)// html <hello ref='child'></hello> // 子元素hello methods: {  change() {   this.$emit('getson',this.msg)   this.obj.name = 'yx'  },   drop(el) {    el.style.background = 'red';   } },// 父元素methods: { add() {  console.log(this.refs); //{child: VueComponent}  this.$refs.child.drop('这里传递父元素的dom节点') }}//如果有一个需求是,一个父元素有2个子组件,其中一个子组件的方法要调用另一个子组件的dom元素//1. 一个子组件需要向父组件发送元素this.$emit('方法名',dom)//2. 父元素接受到子组件的传递得到对应dom//3. 父元素通过this.$refs调用对应的另一个子组件的方法并传入参数// 子元素hello和world <div class="world">  <h2 ref="world">这是world的dom元素</h2>  <button @click='send'>给父元素传递dom</button> </div> methods: {  send(){   this.$emit('give',this.$refs.world); //给父元素发送dom }  <div class='hello'>  <button>改变dom</button> </div>  methods: {  changeDom(target){   console.log(target)  } } // 父元素 <world @give='父亲自己的方法'></world> <hello ref='helloChild'></hello> methods: {  // 这里接受子元素传递过来的dom元素  '父亲自己的方法'(target) {   this.refs.helloChild.changeDom(target) //调用另一个子元素的方法,并把dom传递过去  } }

Vue的优点

Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快等优势,Vue中页面使用的是局部刷新,不用每次跳转页面都要请求所有数据和dom,可以大大提升访问速度和用户体验。

关于“如何使用Vue实现组件化通讯”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何使用Vue实现组件化通讯”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何使用Vue实现组件化通讯

本文链接: https://www.lsjlt.com/news/344713.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用Vue实现组件化通讯
    这篇文章主要介绍了如何使用Vue实现组件化通讯的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Vue实现组件化通讯文章都会有所收获,下面我们一起来看看吧。1. Vue的组成文件(.vue)分为三部分,分别...
    99+
    2023-07-04
  • Vue中怎么实现组件化通讯
    本篇文章为大家展示了Vue中怎么实现组件化通讯,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. Vue的组成文件(.vue)分为三部分,分别对应html,js,c...
    99+
    2024-04-02
  • 详细聊聊vue组件是如何实现组件通讯的
    目录前言如何解决组件之间通讯呢?解决方案:父传子实现过程:原理图示父组件 Footer.vue子组件 MyCon.vue小案例 采用了父传子父组件 App.vue子组件 MyProd...
    99+
    2024-04-02
  • vue如何实现组件通信
    这篇文章主要介绍vue如何实现组件通信,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言在vue中, 组件的关系不外乎以下三种:组件是需要通信的,在开发中,常用到的通信方式有:vuex、eventBus、以及prop...
    99+
    2023-06-29
  • Vue如何实现组件间通信
    目录1. 父子间通信1.1 父组件 --> 儿子组件1.2 儿子组件 --> 父组件2. 爷孙间通信3. 任意组件间通信3.1 EventBus3.2 Vuex1. 父子...
    99+
    2024-04-02
  • vue组件间通信如何实现
    本篇内容主要讲解“vue组件间通信如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue组件间通信如何实现”吧!父组件传子组件父传子方法(一) 属性传递 props//子组件&l...
    99+
    2023-07-04
  • 如何用Vue实现父子组件通信
    目录一、父子组件的关系构成二、props三、$emit四、$parent五、总结 一、父子组件的关系构成 本篇文章将要总结的是Vue中父子组件之间的通信方式。 那在vue中父子组件之...
    99+
    2024-04-02
  • vue指令如何实现组件通信
    本文小编为大家详细介绍“vue指令如何实现组件通信”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue指令如何实现组件通信”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue指令实现组件通信的方法:1、父组件通...
    99+
    2023-07-05
  • Vue如何实现组件间通信方式
    这篇文章主要介绍了Vue如何实现组件间通信方式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。props父组件可以通过props向下传递数据给子组件静态的Props通过为子组件...
    99+
    2023-06-29
  • 如何通过JavaScript实现组件化和模块化
    今天小编给大家分享的是如何通过JavaScript实现组件化和模块化,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。组件化和模块化为什么会有组件化和模块化?当我们的项目复杂度不断上升,...
    99+
    2023-07-06
  • 怎么用eventemitter2实现Vue组件通信
    这篇文章主要讲解了“怎么用eventemitter2实现Vue组件通信”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用eventemitter2实现Vue组件通信”吧!概述当两个组件之间...
    99+
    2023-07-04
  • Vue中实现组件间通讯的方式有哪些
    这篇文章主要讲解了“Vue中实现组件间通讯的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中实现组件间通讯的方式有哪些”吧!1.那些场景需要通讯?由于 Vue 所有的组件呈现...
    99+
    2023-06-30
  • vue中如何实现非父子组件的通信
    这篇文章主要介绍了vue中如何实现非父子组件的通信,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Provide和InjectProvide和Inject用于非父子组件之间...
    99+
    2023-06-29
  • vue中如何使用mqtt服务端实现即时通讯
    小编给大家分享一下vue中如何使用mqtt服务端实现即时通讯,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MQTT协议MQTT(Message Queuing T...
    99+
    2023-06-20
  • Vue中如何使用echarts可视化组件
    这篇文章将为大家详细讲解有关Vue中如何使用echarts可视化组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。找到脚手架项目所在地址,执行cnpm install echarts,安装e...
    99+
    2023-06-20
  • Vue3组件间如何通讯
    本篇内容主要讲解“Vue3组件间如何通讯”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3组件间如何通讯”吧!本文讲解 Vue 3.2 组件多种通讯方式的基础用法,并且使用了  单...
    99+
    2023-06-29
  • 如何通过JSF 2实现可重用的Ajax化组件
    本篇文章给大家分享的是有关如何通过JSF 2实现可重用的Ajax化组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我将向您介绍如何实现自动完成组件,它将使用Ajax管理其完成...
    99+
    2023-06-17
  • 如何使用vue实现一个toast弹窗组件
    本篇内容介绍了“如何使用vue实现一个toast弹窗组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,我们来分析一下弹窗组件的特性(需...
    99+
    2023-07-04
  • Reactjs如何实现通用分页组件
    这篇文章给大家分享的是有关Reactjs如何实现通用分页组件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的...
    99+
    2024-04-02
  • Vue-router类似Vuex如何实现组件化开发
    这篇文章主要介绍了Vue-router类似Vuex如何实现组件化开发,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:随着项目越来越大...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作