复习4

作者: 刘松阳 | 来源:发表于2019-05-14 19:20 被阅读0次

    组件通讯之slot

    在要封闭的组件内部通过slot实现:
    
    例如:
    
     <div class="hd" ref="hd">
        <slot name="goBack"></slot>
        {{ title }}
        <slot name="logout"></slot>
    </div>
    
    
    调用时,在组件标签中间嵌入:通过 slot="名称"来嵌入
    
    <div class="hd" ref="hd">
        <slot name="goBack"></slot>
        {{ title }}
        <slot name="logout"></slot>
    </div>
    
    总结:封装一个组件的三要素:要传递的参数,事件,slot
    

    组件通讯是单向的数据流:

    如何双向传递解决方案:
    
       第一种方案:父组组件往子级组件传递一个JS对象  【不推荐】
       第二种方案:利用sync和update事件触发来来向父级反馈更新的值
    
           第一步:在父级传递的子组件添加sync
    
             例如: <headCom :title.sync="t"></headCom>
    
    
           第二步:在子组件内部,通过$emit更新父组件传递过来的值
    
             例如: this.$emit('update:title',v)
    
               其中:update是一个关键字,固定写法,后面跟冒号(:),再后是你要更新的哪个属性,例如:title
    
    
    
        当然:表单中的v-model也是双向数据流、
    

    计算属性:主要通过computed关键字实现

    通过逻辑计算,得到的一个新值,这个新值是可以实时响应的
    计算属性的优势:可以缓存数据

    注意:watch

    你说一下vue中 methods,computed,watch的区别???

    $set:可以动态的给对象添加属性,并且实现响应

    vue过滤器:即数据进行格式化处理

    一、 创建Vue过滤器:

    1.全局过滤器
    
      Vue.filter('过滤器名称',function(参数1,参数2,...) {
    
          //逻辑实现
    
      })
    
      注意:参数1:就是要格式化的那个数据,
            参数2:才是真正过滤器中传递的第3个参数
            参数3:才是真正过滤器中传递的第2个参数
            以此类推。。。。
    
    
      全局过滤器:可以在任意组件中使用
      
    
    2.局部过滤器:
    
      通过filters只能在当前组件内部来使用
    

    二、使用过滤器

    {{ 要格式化的数据 | 过滤器名(参数1,参数2,...,参数n) }}

    自定义指令:主要对经常使用的dom操作进行封装,方便复用

    vue指令:

      vue内置指令:v-for,v-if,v-show,v-cloak,v-html......
      vue自定义指令:全局自定义指令,局部自定义指令
    
        第一种:全局自定义指令:
        
           Vue.directive('自定义指令名',{
    
                 
           })
    
           例如:
    
           Vue.directive('focus',{
            inserted(el) {
                console.log('el:',el)
                el.focus();
            }
          });
    
        第二种:局部自自定指令:主要通过directives实现
    

    转场动画:主要通过transition组件来实现动画效果

    使用步骤:

      第一步:要给进行切换的区域添加一个transition组件,并且添加一个name名称,这个名称即为css类的前缀
    
        例如:
    
          <transition name="move">
              <router-view></router-view>
           </transition>
    
      第二步:给添加name的transition定义css3动画效果,例如:位移(tranform:translate()),淡入淡出(opaicty)
    
            设置动画:进入动画,离开动画
    
            1.进入动画:
            
               .name名称-enter {
    
                }
               .name名称-enter-active {
    
    
               }
    
               例如:
               .dh-enter {
                  transform: translateX(-100%)
                }
    
      
    
            2.离开:
    
            .name名称-leave {
    
    
            }
    
            .name名称-leave-active {
    
    
            }
    
            例如:
    
            .dh-leave-active {
                transform: translateX(100%)
            }
    
            .dh-enter-active, .dh-leave-active {
    
                transition: transform .3s;
            
            }
    
    
    
    animate.css和vue中的transition配合使用
    
    
    说明:
    
          1.进入动画  enter-active-class="animated tada"  
          2.离开动画:leave-active-class="animated fadeInDown"
    
     <transition 
          name="move"
          enter-active-class="animated tada"
          leave-active-class="animated fadeInDown"
     >
       <router-view></router-view>
     </transition>
    
    
    ###  keep-alive:可以缓存组件内容在内存中
    
       <keep-alive include="home,cate">
         <router-view></router-view>
       </keep-alive>
    
     说明:
    
       include:表示只包含对应的组件才缓存
       exclude:表示排除要缓存的组件
    
    
       与keep-alive相关的钩子函数:
    
        activated:keep-alive 组件激活时调用
        deactivated:keep-alive 组件停用时调用
    
        注意:必须在使用keep-alive时才会激活activated和deactivated这两个钩子
    
        
    
    
    nextTick
    

    相关文章

      网友评论

          本文标题:复习4

          本文链接:https://www.haomeiwen.com/subject/ncweaqtx.html