手机版

关于vue.js组件的数据流问题

时间:2021-09-04 来源:互联网 编辑:宝哥软件园 浏览:

一.组成部分

组件可以说是现代前端框架中不可或缺的一部分。使用组件不仅可以大大提高代码的重用率和开发人员的开发效率,而且对代码的后期维护也有非常重要的意义。前端开发,由于历史原因,WebComponent虽然好用,但是它的发展受到很大的限制,就像很多新的前端技术一样,只是遥不可及。基于这种情况,智能开发人员试图通过在框架内部集成相应的功能来完成组件化,各种现代前端框架基本上都有自己的实现。在这里,我们将分析vue的组件,重点是数据流。

第二,vue组件

vue的组件在创建模板时基于普通的html,不需要学习jsx、handlebars等特殊语法。所以学习成本相对较低,更容易上手。使用vue组件时,一般分为两部分:组件注册和组件调用。

(1)组件注册

Vue.component('pop-box ',{ template : ' div class=' component-box ' \ div class=' component-content ' \../div\ /div ',prop :[.],data:函数(){ return.},methods: {.},已挂载().},});使用Vue.component方法,我们可以轻松地创建一个全局可用的组件。当然,我们也可以在实例或组件中注册本地组件,但是原理是相似的。Vue.component的第一个参数是组件的名称,或唯一标识符(id),将用于后续调用;第二个参数是一个对象,它通常包含模板、数据(计算的)、方法、钩子函数(创建的、安装的.),等等。

值得注意的是:

组件中的数据必须是函数,其返回值将作为实际的“数据”;vue1.x和vue2.x的挂钩功能略有不同。如果发现挂钩功能无效,记得确认vue的版本。(2)组件调用

(1)开始标签结束标签模式

弹出框文本=' 200' v-bind:数字=' 200 '/弹出框(2)无结束标签模式

pop-box text=' 200 ' v-bind : number=' 200 '/调用vue组件有两种模式。如果不使用插槽,这两种模式没有区别。但是,如果需要slot,则只能使用包含开始标记和结束标记的模式。

值得注意的是,在绑定上述数据时,直接采用了property='value '的形式,无论value是数字还是字符串,property最终都是字符串类型。请使用格式v-bind:property='value ',或缩写为:property='value '。

Iii .vue组件数据流

Vue遵循典型的单向数据流原则,即数据总是从父组件传递到子组件,子组件可以维护自己的数据,但无权修改父组件传递给它的数据。当开发人员试图这样做时,vue会报告错误。这样做的好处是防止多个子组件试图修改父组件状态,这使得这种行为难以跟踪。vue中的具体实现如下:

父组件通过绑定道具将数据传递给子组件,但是子组件本身无权修改数据。如果要修改,只能通过事件向父组件报告修改行为,由父组件自己决定如何处理数据。

简单的例子

div id=' app ' my-counter @ Inc=' address ' : counter=' counter '/my-counter/div.Vue.component('my-counter ',{ template : ' div class=' counter ' \ div { { counter } }/div \ button @ click=' Inc ' address/button \/div ',prop :[' counter '],methods : { Inc : function(){ this。$ emit(' Inc ');} }});var app=new Vue({ El : ' # app },data: { counter: 0 },methods: {递增(){ this.counter} }});为了使它更简单,只创建一个my-counter组件作为子组件,因此我们可以将vue的实例视为父组件。

(2)数据流方向分析

(1)我们定义了一个叫做计数器的数据;在父组件中;(2)调用组件时,父组件的计数器通过:counter='counter '以prop的形式传递给子组件;(3)子组件读取计数器并显示在模板中;(4)当用户点击按钮时,需要添加计数器;(5)子组件听了这个事件,但是没有直接修改计数器,而是通过了这个。$ emit(' Inc ');以自定义事件的形式报告要添加到父组件的事件;(6)在父组件中,由于@ Inc=' include '已经执行,子组件上报的事件可以监控,计数器可以用自己的递增方法递增;(7)当父组件中的数据更新时,子组件中的数据也会自动更新,界面内容也会更新。这个过程由框架自动完成。

(3)总结

上面的例子基本上展示了vue的主要数据流方向,但是这种基于prop/evnet的方法只适用于父子关系直接的组件,如果兄弟组件或者大量组件的数据流方向都是基于这种方法,就会变得非常麻烦,可以考虑使用更强大的状态管理模式。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:关于vue.js组件的数据流问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。