Vue——组件

  组件化思想是Vue最为核心的一个思想

  Vue中的每一个实例都是一个组件,也就是说一个项目是由很多个组件/实例组成的,因此,掌握组件的知识点尤为重要

 

基本概念

  组件即为一个可以复用的Vue实例,可以在Vue根实例中反复使用

声明方式

  分两种:全局局部

  全局组件用Vue实例的component方法来创建

  

  全局组件可以在Vue根实例下直接使用其名字为标签名的标签来调用,无需注册

  

  而局部组件则是用一个对象来创建的,对象名组件名,但使用之前需要注册(Vue实例的components中)

  如果对原有的组件名不满意,可以在注册时修改

  

  

  由于组件是可以复用的Vue实例,因此组件中也可以添加datacomputedmethodswatch等,只有el是不可以添加的(仅属于根实例

根元素

  组件中,一个模板中只能有一个根元素

  如下就是不行的,会报错,只认第一个元素,其余元素都删除

  

  这时需要用一个父元素充当根元素,如下

  

 

组件传值

插槽

  当需要向组件内添加内容的时候,可能出现如下的情况

  

  这时hello不会出现在页面中,因此需要添加一个插槽,以便让添加在组件中的内容添加到其中,并被浏览器渲染出来

  

name属性

  如果出现多个插槽,所有添加进去的内容会被复制,并插入这多个插槽中,但是并不是我们所需要的效果

  

  这里就需要对插槽添加name属性,以标识出不同的插槽,具体内容需要插入哪个插槽,在标签中添加slot属性并书写对应的插槽的name值

  

动态组件

  对于注册过的组件,如果想动态变更调用的组件,可以使用Vue自带的component标签,在其中用v-bind绑定is属性

  

元素渲染

  有些元素内部的标签是固定的,例如table中只可以有tr、td,如果在table标签中添加了非tr、td标签,则页面渲染时,会把内部标签渲染到外面

  

  

  为了解决这种问题,可以在table标签中正常添加tr标签,在tr标签上添加is属性,属性值为需要添加在这个位置的组件名称

  

refs

  ref是Vue里用来获取DOM节点的一个方法,绑定在需要获取节点的标签上,可以在mounted这个生命周期里用this.$refs.ref名称的方法取到相应的DOM节点

  获取之后,就可以对这个DOM节点进行编辑了(类似于原生的JS)

  

  而在组件中,给组件添加上ref,得到的是组件本身的引用

  (未完待续)

posted @ 2019-09-21 21:06  且听风吟720  阅读(162)  评论(0编辑  收藏  举报