详解Vue组件之间的数据通信实例

网友投稿 321 2023-05-07


详解Vue组件之间的数据通信实例

最近在用vue做项目,学习了不少东西,但是有时候光顾着做项目却忘记要找个时间来整理一下最近的一些学习新得,因为是新手,所以可能会有错误的地方,欢迎指出和交流呀~~~

关于父子组件以及非父子组件之间的数据通信

1 父子组件之间数据通信

一般父组件向子组件传递数据用prop进行传递,注意,子组http://件不能对prop中的数据进行更改,vue中规定是防止子组件对父组件中的数据进行窜改。而子组件向父组件进行数据传递则可以通过事件触发父组件的事件来实现数据的传递。(是不是有点懵逼了,看个例子吧 )

(这里我就直接摘取一段项目中的例子代码来说明)

使用prop进行数据传递:

//这是父组件中的部分代码,父组件向子组件传递数据(method,dialogFormvisible)

// 父组件的部分代码

新增员工

:dialogFormVisible="dialogFormVisible" @close="closeDialog" @getEmployee="getEmployee">

:dialogFormVisible="dialogFormVisible" @close="closeDialog" @getEmployee="getEmployee">

// 父组件的script代码

export default {

data () {

return {

method:{handle: 'add‘, title: '增加员工'}

dialogFeGXdcgyHviormvisible: false

}

}

}

// 子组件中则需要加prop属性数据 ,如下所示:

export default {

props: [ 'method', 'dialogFormVisible']

}

//所以只要父组件中的数据变化修改,子组件中的数据也会跟这修改;

在chrome中用vue-devtool其实也可以看到相关的数据属性;

当然,子组件做完相关操作之后,需要时间的是将属性值dialogFormVisible重新修改为false。若是直接在子组件进行修改的话,就会报错,因为会影响到父组件的数据,vue中规定不能直接对prop的属性值进行修改。那么就可以用事件触发来实现子组件向父组件传递数据了。

///父组件监听子组件的事件,通过@close="closeDialog"和@getEmployee="getEmployee"来实现监听;

一旦子组件中的事件close和getEmployee发生之后,就会触发父组件中的事件closeDialog和getEmployee事件。

// 父组件的部分代码

新增员工

//子组件中的事件分发

export default {

methods: {

// 关闭弹出框

closeDialog () {

this.$emit('close', false) //这里就是直接触发子组件的close事件,一旦这个执行,父组件中的对应方法就会执行。

}

}

}

// 当那边触发关闭事件的时候,这边的显示值就要关闭,那边会传过来一个false

// 父组件的事件

export default {

methods: {

// 当那边触发关闭事件的时候,这边的显示值就要关闭,那边会传过来一个false

closeDialog (val) {

this.dialogFormVihttp://sible = val

}

}

}

这样就实现了父子组件之间的数据传递;

2 实现非父子组件之间的数据传递

通过建立中间的事件bus总线。实现非父子组件之间的数据通信。

首先建立事件bus,我会新建一个bus.js文件;注册bus。

分别在组件中使用emit和on实现数据之间的通信;

1 bus.js文件

//bus.js,注册Bus

import Vue from 'vue'

export default new Vue()

2 组件emit触发事件

添加任务


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis防止sql注入的实例
下一篇:Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#<Object>‘的解决
相关文章

 发表评论

暂时没有评论,来抢沙发吧~