vue教程(第七节)
今天我们来学习一下vue中非常重要的一个思想,就是组件思想,我们网页的很多部分都是提取成为组件的,它们就像砖块一样,哪里需要哪里搬,极大的减少了我们的开发代码量,我们现在看看如何使用组件吧;
——》先定义一个vue文件:

我们取名叫child,然后编写子组件的代码,代码结构和所有的vue文件是一样滴,由template、script、style三大标签组成;
——》为了方便区分,我们给它取名也叫child,然后写个p标签,写点文字:

——》父组件引入子组件文件,然后注册、最后使用,请看代码:

这是es6的写法,引入外部文件,第二份位置是注册组件,这也是es6的语法,后期我会出个es6语法的简称,做出详细的讲解,其实它的意思是“child”:“child”,第三步就是使用,要注意这里使用是直接作为标签使用,如果注册时候使用的是驼峰写法,那大写字母开头的单词需要在前面加一个短横杆,然后大写变小写,例如:cjildChild=》child-child,这样的写法;我们来看看效果吧:

子组件就这样被渲染到了页面呢,非常方便,就是三步,引入文件、注册注册、使用组件。
——》父组件向子组件传值:
父组件如何向子组件传值呢?尤大神想了一个很完美的做法,父组件只有一个,子组件却可以很多,那怎么才能知道传的值是给谁呢的,这就需要子组件做主动的接收了,父组件先通过属性传递的方式将值传到子组件里面:


我们来看看效果:

子组件顺利的渲染出了父组件的值:
——》子组件又如何向父组件穿值呢?
这的确是个问题,不过我们也完美的解决了,那就是通过方法的方式,子组件通过抛一个方法将子组件的值传到父组件,look代码:

子组件定义一个方法chuandataf,然后通过this.$emit("funcz","value")这个函数进行传值,解释一下吧,emit这个对象有两个参数,第一个参数是父组件定义的事件名,第二个参数是子组件所需要传的值,然后父组件那边我们就要这样写了:

通过funcz这个事件,传递给一个函数,解释一下(val)=>dataf=val;是es6的写法,意思是将传递的值传给dataf这个参数;我们来看看效果吧:

在点击了按钮时候,父组件的值就发生了变化,说明已经将子组件的值传到了父组件;
哦了,这就是vue组件的使用,以及对父传子,子传父的写法!
题外话:父子之间传值仅仅局限于有连接关系的两个组件之间,如果需要隔代传值,或者兄弟传值,或者其他复杂的传值,如果采用父子传值迭代过去的话,那代码就会很丑,而且后期维护会非常复杂,这时候就需要用其他方式来操作了,后期我会介绍用插件vuex来进行状态控制的方式,期待你的观看!哦了,今天就这样了哦,晚安!