• 组件的传参


    组件的定义与使用

    组件的传参

    父App.vue 传给子CounterCom.vue

    主要使用的是props

    CounterCom.vue 组件中
    1.接收参数并定义默认值
    props:{
        "num":{type:Number,default:1}
    }
    2.使用参数num
    data(){
        return {counter:this.num}
    }


    App.vue文件中


    使用props
    父传给子的数组是只读的(做默认值,读取显示)
    不能进行修改

     实现点击加1功能

     子组件数据传递给父组件

    使用的事件 $emit


    CounterCom.vue

    组件设计(购物车加减个数)

     props

    1.     默认值:value
    2.     最大值:max
    3.     最小值:min
    4.     步进制:step(一次加多 多少)

    data
        被改变的值:num 加add
    methods 
        加add
        减minus
    事件
        numchange 数字发送变化
    template
        
        
        

    组件设计(幻灯片)

    1. <template>
    2. <div class="swiper" @mousemove="overHd" @mouseout="auto">
    3. <div class="swiper-item" v-for="(item,ind) in gallery" :key="item" v-show="ind===index">
    4. <img :src="item" alt="" width="100%">
    5. div>
    6. <div class="thumbs">
    7. <span class="thumb" @click="index=item-1" :class="{'active':item===index+1}" v-for="item in gallery.length" :key="item">{{item}}span>
    8. div>
    9. div>
    10. template>
    11. <script>
    12. // item 1,2,3,4
    13. // index0
    14. export default{
    15. props:{
    16. // 引用类型的默认值必须是函数返回数据
    17. gallery:{
    18. type:Array,
    19. default(){return []}
    20. }
    21. },
    22. data(){
    23. return {
    24. // 默认显示
    25. index:0,
    26. stopID:null,//停止id
    27. }
    28. },
    29. // 当组件创建完毕,执行自动播放
    30. created() {
    31. this.auto();
    32. },
    33. methods:{
    34. // 自动播放
    35. auto(){
    36. this.stopID=setInterval(()=>{
    37. // 每隔2500毫秒让index值加1
    38. // 检查index的边界
    39. this.index++;
    40. this.check()
    41. },2500)
    42. },
    43. // 鼠标移入停止
    44. overHd(){
    45. clearInterval(this.stopID);
    46. },
    47. // 检查边界
    48. check(){
    49. // 如果index等于gallery长度 让index值为0
    50. if(this.index>=this.gallery.length){
    51. this.index=0
    52. }
    53. }
    54. }
    55. }
    56. script>
    57. <style scoped="scoped">
    58. .swiper{
    59. position: relative;
    60. }
    61. .thumbs{
    62. position: absolute;
    63. bottom: 10px;
    64. text-align: center;
    65. width: 100%;
    66. }
    67. .thumb{
    68. height: 15px;
    69. width: 15px;
    70. display: inline-block;
    71. border-radius: 15px;
    72. margin: 0 5px;
    73. background-color: #fff;
    74. /* 隐藏文本(首行缩进) */
    75. text-indent: 999em;
    76. }
    77. .thumb:hover{
    78. cursor: pointer;
    79. background-color: #f70;
    80. }
    81. .active{
    82. background-color: #f70;
    83. }
    84. style>
    1. <template>
    2. <div>
    3. <h1>swiper幻灯片组件h1>
    4. <SwiperCom style="width: 800px;" :gallery="gallery">SwiperCom>
    5. div>
    6. template>
    7. <script>
    8. // 01导入组件
    9. import SwiperCom from './components/SwiperCom.vue'
    10. export default {
    11. components: {
    12. SwiperCom
    13. },
    14. data() {
    15. return {
    16. gallery: [
    17. "https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/290270b6fc499fc5fcb653417e99fe91.jpg?w=632&h=340",
    18. "https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/5d1892854c8bb165e755d68bde287d71.jpg?w=632&h=340",
    19. "https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/28c13d0d11b38ec17fa5d83bc6ba5912.jpg?w=632&h=340"
    20. ]
    21. }
    22. }
    23. }
    24. script>
    25. <style>
    26. style>

    组件设计(跑马灯)

    1. //vue.app
    2. <template>
    3. <div>
    4. <h1>文字滚动h1>
    5. <MarQuee :inter='100' str="vue 学好,月薪过万,很容易!">MarQuee>
    6. <MarQuee :inter='200' str="我喜欢jsdjn!">MarQuee>
    7. div>
    8. template>
    9. <script>
    10. // 导入组件
    11. import MarQuee from './components/MarQuee.vue'
    12. export default{
    13. // 注册组件
    14. components:{
    15. MarQuee
    16. }
    17. }
    18. script>
    19. <style>
    20. style>
    21. //MarQuee.vue
    22. <template>
    23. <div>
    24. {{msg}}
    25. div>
    26. template>
    27. <script>
    28. export default {
    29. props:{
    30. inter:{type:Number,default:50},//滚动的速度
    31. str:{type:String,default:''},//滚动的初始文本
    32. },
    33. data(){
    34. return{
    35. msg:this.str //显示文本
    36. }
    37. },
    38. created() {
    39. // 组件创建完毕,调用自动播放
    40. this.auto();
    41. },
    42. methods:{
    43. auto(){
    44. setInterval(()=>{
    45. // 把msg的文本第一个字符放到最后一个
    46. // slice(1)从第一截取到最后
    47. // slice(0,1)截取第0个字符
    48. this.msg=this.msg.slice(1)+this.msg.slice(0,1)
    49. },this.inter)
    50. }
    51. }
    52. }
    53. script>
    54. <style>
    55. style>

    生命周期

    概念

    每个组件从创建到销毁都会经历一系列特定的过程,称为生命周期
    把过程执行的回调函数称为生命周期函数

    作用

    创建后发起ajax请求
    挂载后操作dom
    添加事件监听
    销毁前移除间隔调用,事件监听
    说明:并不是每个生命周期都必须使用 

     创建前后

    beforeCreate创建前
        特点: 有this,没有data与methods

    created创建后
        特点: 有data,没有$el,dom节点
        用处: ajax请求,定时器,事件监听

     挂载前后

    beforeMount挂载前
        特点: 有$el,数据没有渲染

    mounted挂载后
        特点: 有dom节点,数据也渲染
        用处: 操作节点,ajax请求

     更新前后

    beforeUpdate更新前
        特点:会执行多次  数据更新,dom节点没有更新

    updated更新完毕
        特点:会执行多次 数据更新,dom节点也更新

     销毁前后

    beforeDestroy销毁前
        特点: 数据可以更新,视图已经不更新
        用处: 移除事件监听,停止定时器

    destroyed销毁完毕
        特点: 没有this,切换视图与vue实例的联系

     

  • 相关阅读:
    低配电脑Win10哪个版本好用?
    【Unity Build-In管线的SurfaceShader剖析_PBS光照函数】
    详解AQS中的condition源码原理
    Android基础第七天 | 字节跳动第四届青训营笔记
    蓝队追踪者工具TrackAttacker,以及免杀马生成工具
    YOLO目标检测——跌倒摔倒数据集【含对应voc、coco和yolo三种格式标签】
    分布式调度xxl-job实战应用解析
    从阵列导向矢量 steering vector -----> S-V MIMO model
    [Django 0-1] Core.Cache模块
    C语言求一维数组逆置
  • 原文地址:https://blog.csdn.net/huijie_0716/article/details/125989751