博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue组件间传值
阅读量:5869 次
发布时间:2019-06-19

本文共 1588 字,大约阅读时间需要 5 分钟。

小白入场自叙(背景):组件间值传递的文件网上已经一大堆了,做为小白的我还要编写一篇有‘耍大刀’的嫌疑。 但其实第一:想巩固一下自己的知识链,第二:想养成分享技术文章的习惯。为前端生态添砖加瓦。

为什么要处理这个问题(why)

  • Vue最大的优势就是数据双向绑定和组件化,SPA模块化开发必然会遇到组件间值传递数据共享的问题。

处理方式有哪些(what)

1.通过 prop + model

一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。model 选项可以用来避免这样的冲突

- drawer.vue 子组件    export default {        name: 'drawer',        props: {            value: {                type: Boolean,                default: false            }        },        methods: {            close () {                    this.$emit('input', false)                }            }        }    }- 父组件 
复制代码
  • 上面代码简单又简洁的实现了父组件与子组件的双向绑定,依托双向绑定方式就可实现子组件到子组件,子组件到父组件等。

2.引入Vuex 通过共享数据处理

通过操作组件对象与store对象绑定实现多个组件间数据传值

watch:{            tableCheckd(val){                this.$store.commit('changeShareCheckd', val)            },            '$store.state.shareCheckd': function(val){                this.tableCheckd = val            }        },复制代码

3.通过消息总线

复制代码
var Bus = new Vue(); //为了方便将Bus(空vue)定义在一个组件中,在实际的运用中一般会新建一Bus.jsVue.component('c1',{ //这里已全局组件为例,同样,单文件组件和局部组件也同样适用template:'
{
{msg}}
', data: () => ({ msg: 'Hello World!' }), created() { Bus.$on('setMsg', content => { this.msg = content; }); }});Vue.component('c2',{ template: '', methods: { sendEvent() { Bus.$emit('setMsg', 'Hi Vue!'); } }});var app= new Vue({ el:'#app'})复制代码

4.通过 vm.data、vm.refs 直接操作对应组件值

this.$refs.multipleTable.clearSelection()复制代码

转载于:https://juejin.im/post/5ce29c0e6fb9a07f0219d30e

你可能感兴趣的文章
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
七天学会ASP.NET MVC (四)——用户授权认证问题
查看>>
upgrade to iOS7,how to remove stroyboard?
查看>>
影响企业信息化成败的几点因素
查看>>
Thinkphp5 模型里别名alias不生效bug【已解决】
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
zabbix监控部署
查看>>
关于Tomcat下项目中文名在Windows和Linux下编码混乱问题解决
查看>>
struts中的xwork源码下载地址
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
记录一些有用的代码技巧,不定期更新
查看>>
Centos 安装后不能上网 解决备忘
查看>>
cisco 交换机链路聚合
查看>>
[AX]AX2012 Form开发概览
查看>>
用几何画板画垂线的方法
查看>>
C++对象模型
查看>>
第九章 Python之面向对象
查看>>
Python标准库——getpass
查看>>
【转】一步一步学Linq to sql(三):增删改
查看>>