当前位置: 首页 > 科技观察

vue.js组件之间传递数据

时间:2023-03-12 22:41:58 科技观察

component是vue.js最大的功能之一,组件实例的作用域是相互独立的,也就是说不同组件之间的数据不能相互引用。如何传递数据也成为组件的重要知识点之一。组件与组件之间也存在不同的关系。父子关系和兄弟关系(不是父子的暂称兄弟)。父子组件父子关系是指组件A在其模板中使用了组件B,则组件A为父组件,组件B为子组件。//注册一个子组件Vue.component('child',{data:function(){text:'我是爸爸的子组件!'}template:'{{text}}}'})//注册一个父组件Vue.component('father',{template:'

'//模板中使用子组件})直接使用父组件什么时候:
会在页面上渲染:我是father的子组件!父组件在模板中使用了子组件,所以是父组件。使用了子组件,所以子组件就是子组件。不相互引用的两个组件是兄弟组件。Vue.component('brother1',{template:'
我是大哥
'})Vue.component('brother2',{template:'
我是小弟
'})使用组件时:
会在页面上呈现:我是大哥,我是大哥小弟Prop子组件想要使用父Component的数据,我们需要通过子组件的props选项获取父组件传过来的数据。下面我使用.vue文件中的格式编写示例。如何传递数据在父组件father.vue中引用子组件child.vue,将name的值传递给子组件。在child.vue传递给页面willrender:Hellolinxin单向数据流当父组件名称改变时,子组件会自动更新视图。但是在子组件中,我们不修改道具。如果一定要修改数据,可以使用以下方法:方法一:将prop赋值给一个局部变量,如果需要修改,在不影响propexportdefault{data(){newMessage:null}的情况下,再修改局部变量,props:['message'],created(){this.newMessage=this.message;}}方法二:在计算属性exportdefault{props:['message'],computed{newMessage(){returnthis中处理prop。newMessage+'hahaha';}}}自定义事件prop是单向绑定:当父组件的属性改变时,会传递给子组件,反之则不行。修改子组件的prop值不会传回给父组件更新视图。那么子组件如何与父组件通信呢?那就是自定义事件。通过监听父组件中的自定义事件$on(eventName),当子组件中的$emit(eventName)触发自定义事件时,父组件执行相应的操作。比如控制父组件中弹出子组件的显示。在子组件中按下关闭后,告诉父组件将其隐藏,然后父组件执行隐藏弹出框的操作。子组件dialog.vue中:这样就实现了父子组件的相互通信.以上Vuex的例子都是基于父子关系的组件,但是对于其他层级的关系,实现起来比较麻烦。那么Vuex这个时候就可以更好的帮助你在各个组件之间进行实时通信。综上所述,组件通信不一定要用Vuex。对于一些简单的数据传输,也可以使用prop。本文主要记录一些组件传参的基础知识点。实战可以参考notepad的例子,使用prop实现子组件的显示和隐藏,使用vuex实现组件间的数据状态管理。【本文为专栏作家“林欣”原创稿件,转载请微信♂联系作者获得授权】点此查看该作者更多好文