vue2复习

v-on  v-text   v-html   v-clock    v-once  v-pre

v-bind   动态参数   v-bind[attrName]     参数名称

v-on 修饰符 .指明的特殊后缀

        event.preventDefault()

           .stop   .prevent  .capture   .self   .once  .passive   .exact    .left      .right       .middle

keyup

Vue.config.keyCodes.f1 = 112         

computed 计算属性   // 当依赖的属性发生变化就会触发

         computed:{

                computedValue1(){

                        return this.[dataName]

                  },

                computedValue2(){

                       get(){

                       默认只有get,可以配置set

                        },

                        set(){

                    }

                }

            }

watch   侦听器     区别  计算属性会缓存,相关的依赖变化才会触发,当需要一些异步操作或者开销比较大事件的时候使用watch

            watch:{

                    watchValue(newValue,oldVlaue){   // 参一旧值,参二新值

                            }

                    }

动态绑定class和style

            可以是对象和数组 <div   :class="{active: isActive}"     :class="[activeClass]"  // activeClass是定义在data里的值

 v-if v-else-if  v-else 当有代码块时,可以用<template></template>包裹起来

v-show // 只是display: none 和block隐藏,v-if是卸载重新渲染

v-for  // 循环     

            数组   (item,index)  in Array    对象  (value,key,index)  in Object

             会触发视图更新的方法(vue2,vue3任何方法都可以)push pop shift  unshift  splice  sort reverse

              不建议v-for和v-if一同使用

              可以循环遍历<template v-for="item in []"><div   v-if="condition">

v-model  修饰符  .lazy  .number   .trim

使用子组件

子组件默认继承Attribute   禁止默认继承inheritAttrs:false关闭默认继承,可以通过$attr访问

子组件使用v-model    用model属性默认是value和input事件,可以配置

model:{

    prop:"checked",

    event:"change"

}

想在子组件的“根元素”上绑定原生事件.native

v-on:focus.native   会绑定到组件的根元素的

有时候不想绑定到根元素上$listeners

子组件里 


.sync 修饰符

this.$emit('update:title', newTitle)

v-bind:title="doc.title"

v-on:update:title="doc.title = $event"

>

v-bind:title.sync=""

<com v-bind.sync="{}" /> 绑定对象,会把对象里的每个property作为独立prop传进去,相当于解构

然后使用时各自绑定方法     v-on:updata:title="obj.title=$event"

插槽 slot

<slot>submit</slot>中间是没传的默认内容,可以通过$slot访问     $slot.default

具名插槽 <slot  name="title">

旧的 <template  slot="title">

<template    v-slot:title>  v-slot只能使用在template

插槽的缩写是#   <template  #title>

作用域插槽   在父组件中渲染子组件的数据

旧的 <template  slot-scope="slotProps">

<slot   v-bind:user="user"/> 子组件里绑定    <template   v-slot:default="slotProps">{{slotProps.user}}

也可以直接写在子组件上 <com     v-slot:default="slotProps">{{slotProps.user}}

动态插槽名   v-slot:[slotName]

动态组件    <component    v-bind:is=""    is里面的name是组件注册的名字 属性方法绑定等直接绑定到<component上可以监听触发,可以用computed区分绑定

keeplive缓存组件实例 可以用include 和 exclude来定义包含或者排除的组件 :max定义最大缓存数量 

异步组件





可以通过$root访问根组件   访问父组件$parent ,访问子组件$children不推荐,建议使用依赖注入

访问子组件使用ref,this.$refs

依赖注入

     在父组件   provide  (){

                return {   

                    title:this.title

                }

        }

在子组件inject:["title"]

对象是响应式,基础数据不是响应式的,可以把参数用一个方法返回

provide(){

        return   {

            title:()=>this.title

}

}


Vue的$on  $off $once   也可以new 一个新的Vue实例来实现组件间的通信,但同样不建议($emit触发)

inline-template  内联模板   

<com inline-template  >

     <div>{{mag}}</div>   msg是子组件的数据,相当于替换组件里面的<template>

</com>

X-Template定义模板 加上text/x-template  通过id来渲染模板

    <script  type="text/x-template"  id="templateId">

         <div>{{msg}}</div>

            Vue.component("comName",{

                    template:"#templateId"})

强制更新  $forceUpdate

过渡&动画  transition

        <transition   name="fade">    fade-enter-active  fade-enter   fade-enter-to    fade-leave   fade-leave-active fade-leave-to

        自定义过渡的类名  enter-class   enter-acitve-class   enter-to-class   leave-class  leave-acitve-class  leave-to-class 

        过渡时间  :duration = "1000"     :duration="{enter:1000,leave:1000}"

动画钩子函数    使用javascript钩子可以绑定  :css="false"  防止收到css的影响


初始渲染的过渡 appear  需要设置appear属性   <transiton  appear

              可以通过自定义类名和javascript钩子

             appear-class   appear-active-class     appear-to-class

             相同标签切换给个key   

            过渡模式 mode      out-in 当前元素先过渡,完成后新元素进入     in-out    新元素进来过渡完成后,当前元素过渡离开

列表过渡   transiton-group   会以真实的元素展示  默认是span,可以用tag属性替换

             一样配置name属性,v-enter    v-enter-acitve   v-enter-to    v-leave    v-leave-acitve   v-leave-to     before-enter enter after-enter  before-leave  leave   after-leave

             多了个v-move


混入mixin 

               钩子函数冲突时,会形成数组进行,mixin的先执行,components,methods,directives冲突时,取组件内的键值对

               全局混入     Vue.mixin会在每个创建的组件混入

自定义指令  directive

                注册全局指令

                vue.directive("focus",{

                            inserted:function(el){

                            }

                })       

                局部注册

                directives:{

                    focus:{

                            inserted:function(el){}

                    }

                }    

                钩子函数


                钩子函数参数


             函数简写     如果只需要在bind和update做出操作

                                Vue.directive("mydirective",function(el,binding){

                    })

添加vue的实例方法   Vue.prototype.

开发Vue插件,Vue.use  ,use的时候会自动调用install方法 ,可以在里面做一些全局的注册


过滤器  filters    使用管道符号 |

            定义全局过滤器   Vue.filter("name",function(value){

            })

            组件内注册

               filters:{

                    name(value){

                    }

                }

               管道串联  {{message | filter1 | filter2 }}  数据过滤完作为参数进入第二个管道

                多个参数  {{message | filter(arg2)}}   默认参数不同写在括号里,当前示例两个参数

对象和数组的相关方法不是响应式的,可以通过vue.set 或者 this.$set改变数值

异步更新队列,Vue更新DOM是异步执行的,在某些场景下,需要获取完数据页面渲染完才去渲染组件,像echart图表啥的,可以用Vue.nextTick()或者this.$nextTick,回调函数会在页面渲染完后执行

去掉Vue的日志和警告 Vue.config.silent = true

应用报错 Vue.config.errorHandler

去掉生产提示Vue.config.productionTip = false

使用代码创建组件  const Com=  Vue.extend({

        template:`<div></div>`,

        data(){

                    return {}

        }

})

Com.$mount("#app")

删除对象,数组,触发更新  Vue.delete( target, propertyName/index )

把对象变成响应式 let state= Vue.observable({key:value})  使用返回的值


组件内的错误捕获errorCaptured

继承组件

      extends: ComA 继承a组件,和mixin类似

vm.$data    实例的data数据

vm.$props  实例接收的数据

vm.$el 实例的根元素

vm.$option 实例的参数选项

vm.$scopedSlots  作用域插槽

const unwatch= vm.$watch("监听对象",function(){

})  监听 ,返回的函数调用取消监听 unwatch()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是JSX 摘自 React 官方:它被称为 JSX,是一个 JavaScript 的语法扩展。我们建议在 Re...
    东扯葫芦西扯瓜阅读 8,433评论 1 3
  • 一、组件 个人理解:为了复用代码而进行封装代码,以及封装代码块之间的通信 1、全局组件 注:(1)、table标签...
    wsgdiv阅读 3,199评论 1 2
  • 链接:https://cn.vuejs.org/v2/api/#Vue-filter API TPshop中国免费...
    zz云飞扬阅读 3,392评论 0 0
  • 初识Vue2.0 想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 vue容器里的代码依然符合htm...
    Zindex阅读 3,870评论 0 0
  • VUE 准备工作Node.js 安装 版本号 V16.14.2 安装路径不要加空格!!!!!!! 下载 ht...
    云顶天宫写代码阅读 4,090评论 0 2

友情链接更多精彩内容