zoukankan      html  css  js  c++  java
  • Vue基础学习笔记

    方法和函数的区别

    1. 面向对象的时候称为方法,面向流程的时候叫函数。
    2. 方法是作为一个对象实例的属性的函数

    生命周期

    生命周期:事务从诞生到消亡的整个过程
    以下是生命周期函数,可以在某个周期做某件事

    [
    	'beforeCreate',
    	'created',		//组件创建完成
    	'beforeMount',
    	'mounted',		//DOM树创建完成
    	'beforeUpdate',
    	'updated',		//DOM更新完成
    	'beforeDestroy',
    	'destroyed',
    	'activated',	//钩子函数,需要作用keep-alive下
    	'deactivated',
    	'errorCaptured',
    	'serverPrefetch'
      ]
    

    计算属性

    computed:运行时作为一个属性来添加,所以调用里面函数时不用加括号()

    注:函数起名时不要用动词,因为computed时作为属性来调用,如getBgColor => BgColor

    区别:  
    	conputed在多次调用时只执行一次,有缓存,只做数据处理  
    	methods是调用几次执行几次,没有缓存,浪费性能  
    

    函数重载

    在js中相同名的函数,下面的函数会覆盖上面的

    在typescript中,函数重载指

    • 两(多)个函数的函数名相同
    • 传入的参数不同
    • 与返回值无关

    v-on的参数问题

    1. 如果该方法不需要额外参数,那么调用方法时()可以不添加。

      @click = 'getBtn'

    2. 如果方法中有参数,调用时没有添加()和参数,则默认传入event

    3. 如果需要同时传入某个参数,同时需要event时,可以通过$event传入事件。

      @click = 'getBtn("abc",$event)'


    v-on的修饰符

    • .stop - 调用 停止事件冒泡 event.stopPropagation() 。

      <a v-on:click.stop="doThis"></a>

    • .prevent - 调用 阻止默认事件 event.preventDefault()。
      <form v-on:submit.prevent="onSubmit"></form>

    • 修饰符可以串联

      <a v-on:click.stop.prevent="doThat"></a>

    • .{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。

      <input type="text" @keyup="keyup($event.which)"> 	//监听键码
      <input type="text" @keyup.tab="keyup()"> 
      <input type="text" @keyup.13='keyup()'>
      
    • .self - 只当在 event.target 是当前元素自身时触发处理函数

      即事件不是从内部元素触发的

      <div v-on:click.self="doThat"></div>

    • .native - 监听组件根元素的原生事件。

    • .once - 只触发一次回调。


    v-if、v-else-if、v-else

    原理:

    v-if后面的条件为布尔值,为flase时对应的元素以及其子元素不会渲染。

    <h2 v-if="ishow">当ishow为true时,显示我</h2>
    <h2 v-else>当ishow为false时,显示我</h2>
    

    这三个指令和JavaScript的指令类似

    bug注意:

    • v-if的渲染时为虚拟dom,为了节省内存会把判断有无原标签,有的话原标签复用。
    • 但后果是如果输入input标签进行if else切换会出现原来输入的value还存在的问题。
    • 解决方法是在标签内部添加key,key值不一样不会复用。 ps: key='new'

    v-show

    v-show和v-if非常相似,用于决定一个Dom会不会渲染
    true渲染,false隐藏

    区别:

    • v-show是在标签内部添加行内样式display='none'
    • v-for是直接创建或移除Dom
    • 实际开发中我们用v-for多一点

    v-for

    v-for遍历数组

    <!-- 项目,下标 -->
    <p v-for="(item,index) in message">{{index}}-{{item}}</p>
    

    v-for遍历对象

    <!-- 值,键,下标 -->
    <li v-for="(value,key,index) in message">{{index+'.'+key+'-'+value}}</li>
    

    v-for 组件的key属性

    • 官方推荐我们使用v-for时,给对应的元素或组件添加上一个:key属性。

    • Vue的虚拟DOM的Diff算法在更新操作节点时,给某个元素插入赋值,
      后面的元素依次更新,没有则重新创建dom再赋值,来完成节点操作,
      这样的效率很慢ps:ABCD => ABECD中,c=>e,d=>c,''=>d

    • 添加key可以给每个元素做唯一标识,Diff算法就可以正确识别节点准确更新

    • 所以,key的作用主要是为了高效的更新虚拟DOM。

      {{item}}


    vue数据响应式

    响应式是指数据可以动态响应到页面上,不需要手动刷新

    以下方法操作数组vue都是响应式的

    • push()
    • pop()
    • shift()
    • unshift()
    • splice()
    • sort()
    • reverse()

    直接使用下标的方式来改变数组不是响应式

    this.arr[0] = 'aaa'  
    

    解决办法

    (被修改的obj/数组,key/下标,要修改的值)
    Vue.set(this.arr,0,'bbb')
    

    删除数据delete也不是响应式

    delete this.obj.age;
    

    解决办法

    (被删除的obj,key)
    Vue.delete(this.obj,'age')
    

    过滤器(filters)

    • 过滤器filters和计算属性computed都是vue的一种方法
    • 内部也是一种函数方法,返回过滤后的值
    • 和computed一样,调用时无需加括号()
    • 但过滤器函数内可以传值,传递的是当前被过滤的数据
    <h2>{{数据 | 过滤器}}</h2>
    
    <div id='app'>
    	<h2>{{message | changeMessage}}</h2>
    </div>
    
    <script>
    	const app = new Vue({
    		el:'#app',
    		data:{
    			message:1.23
    		},
    		filters:{
    			changeMessage(value){
    				//toFixed是显示小数点后几位
    				return value.toFixed();
    			}
    		}
    	})
    </script>
    

    监听data属性(watch)

    watch:用法是监听data的属性,当属性发生改变调用函数。和methods同级

    注意:不要使用箭头函数来定义watch函数。因为箭头函数指向父级作用域上下文,不会指向vue实例

    	watch:{
    	  data(){
    		setTimeout(this.refresh,20)
    	  }
    	}
    

    img加载监听

    原生的js监听图片:

    img.onload = function() {}  
    

    Vue中监听:

    @load='方法'
    

    $nextTick下一帧

    $nextTick()内部传递箭头函数

    意为箭头函数可以在其他函数运行完的下一帧运行。

  • 相关阅读:
    [好程序员训练营]Objective-C学习笔记---基本数据结构NSNumber
    [好程序员训练营]Objective-C学习笔记---基本数据结构NSDictionary
    [好程序员训练营]Objective-C学习笔记--基本数据结构NSArray
    [好程序员训练营]Objective-C学习笔记---基本数据结构NSString
    [好程序员训练营]Objective-C学习笔记---点语法
    [好程序员训练营]Objective-C学习笔记---构造函数和析构函数
    【好程序员训练营】Objective-C学习笔记----------成员变量和成员函数的封装
    【好程序员训练营】Objective-C学习笔记______类和对象的使用
    【好程序员训练营】Objective-C学习笔记(类的声明)NO1
    React Native 手工搭建环境 之iOS篇
  • 原文地址:https://www.cnblogs.com/lovecode3000/p/12322884.html
Copyright © 2011-2022 走看看