vue2中的组件
vue2中的组件
-
作用:基于组件开发,易维护,易复用
-
分类:使用的作用域不同分为全局组件和局部组件
-
注意:
- 组件名需要与原来的html标签不一致,且不要有大写字母
- 组件的data数据是一个函数,将对象return出去,与vue实例不一致
- 组件的template只能存在一个根标签
一、全局组件
1 | <div id="app"> |
二、局部组件
1 | <div id="app"> |
三、组件的参数传递
1)父组件传递参数给子组件
-
使用v-bind:自定义属性向子组件传递参数
-
子组件中使用props接收参数,props的值是一个数组
-
同data一致,使用插值表达式在子组件的模板中使用props的参数即可使用v-bind:自定义属性向子组件传递参数子组件中使用props接收参数,props的值是一个数组同data一致,使用插值表达式在子组件的模板中使用props的参数即可
1 | <div id="app"> |
2)子组件传递参数给父组件
-
在子组件标签上自定义一个事件,内容指向父组件的一个方法,作为该自定义事件的参数接收方法
-
在子组件中调用**this.$emit(“自定义事件名”, 传递的参数)**方法,触发参数的传递
-
在父组件的接收方法中,来处理子组件传递的参数
1 | <div id="app"> |
3)非父子组件传递参数
-
创建一个空的vue实例对象,
var data = new Vue()
,用于充当事件中心的角色 -
在A组件中通过
data.$emit(自定义事件名, 传递的参数)
,触发自定义事件 -
在B组件中通过
data.$on(自定义事件名, function(input){...})
,来监听自定义事件,通过处理函数来接收处理传递的参数
1 | <div id="app"> |
四、内置组件
1)component
-
作用:用于动态渲染组件
1 | <div id="app" class="container"> |
2)tarnsition
-
作用:实现过度效果和动画
-
属性:
- name:可以自定义前缀,设置后各个状态的类名前缀将会改变
-
步骤:
- 使用transition标签包裹元素或组件
- 对各个状态的类名进行样式的编写
- 显示阶段类名:v-enter-active
- 显示阶段开始:v-enter
- 显示阶段结束:v-enter-to
- 隐藏阶段:v-leave-active
- 隐藏阶段开始:v-leave
- 隐藏阶段结束:v-leave-to
- 显示阶段类名:v-enter-active
2.1)使用内置状态类名
1 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> |
2.2)使用动画类库的类
-
Animate.css是一款强大的CSS3动画类库
- 说明:是一款强大的CSS3动画类库,通过使用定义好动画类名,完成动画效果
- 官网:https://animate.style/
1 | <link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css"> |
3)transition-group
-
作用:渲染多个元素,列表的动画
-
注意:
- 默认渲染为
span
,通过指定tag更换为其他元素 - 内部的v-for元素总要指定key属性
- 过度动画处于内部的元素中,而不是transition
- v-move对于设置过渡的切换时机和过渡曲线非常有用
- 默认渲染为
1 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 半月无霜!
评论
ValineDisqus