vue遇到的坑,linux服务器分区教程

//setInterval同理

console.log(this); //此时this指向Window对象

},1000) ;

}

解决方法 :使用箭头函数或者缓存this

//箭头函数访问this实例因为箭头函数本身没有绑定this

setTimeout(() => {

console. log(this);}, 500) ;

//使用变量访问this实例let self=this;

},1000);

setTimeout (function () {

console. log(self);//使用self变量访问this实例

}, 1000) ;

setInterval路由跳转继续运行并没有销毁

场景一 :比如一些弹幕,走马灯文字,这类需要定时调用的,路由跳转之后,因为组件已经销毁了,但是setlnterval还没有销毁,还在继续后台调用,控制台会不断报错,如果运算量大的话,无法及时清除,会导致严重的页面卡顿。

解决方法 :在组件生命周期beforeDestroy停止setInterval

created() {

this.intervalid = setInterval(() => {

this.layerError = “”;

this.Timer = null;

}, 100000);

}

beforeDestroy( ){

//我通常是把setInterval( )定时器赋值给this实例,然后就可以像下面这么暂停。

clearInterval(this.intervalid);

}

2.Vue路由拦截浏览器后退实现草稿保存类似需求

场景一 :为了防止用户突然离开,没有保存已输入的信息。

解决方法 :

//在路由组件中:mounted(){},

beforeRouteLeave (to, from, next) {

if(用户已经输入信息){

//出现弹窗提醒保存草稿,或者自动后台为其保存

}else{

next(true);//用户离开

}

}

3.自定义组件添加click等事件不生效

场景一 :一些自定义组件,需要额外添加一些事件来实现一些特定需求

<el-progress type=“circle” :percentage=“0" @click=“stopProgress”>

解决方法:使用.native修饰符

<el-progress type=“circle” :percentage=“0" @click.native=“stopProgress”>

4.手动操控自定义组件

场景一 :一些自定义组件,需要去获取组件对象进行一些其他的Dom操作

解决方法 :使用ref属性暴露组件获取句柄

5.深度作用选择器

场景一 : scoped的样式,希望影响到子组件的默认样式

在样式中设置完scoped在浏览器解析为如下图这样,a是个div,a div里面包含一个组件里面解析完了div的样式名字为b,想在父组件影响到子组件的默认样式。解决方法:

//有些像Sass之类的预处理器无法正确解析>>>。这种情况下你可以使用/deep/操作符取而代之- - - -这是一个>>>的别名,同样可以正常工作。

.a /deep/ .b { /* … */ }

6.Vue数组/对象更新视图不更新

场景一 :很多时候我们习惯于这样操作数组和对象

data() {

return {

arr: [1,2,3],

obj:{

a: 1,

b: 2

}

};

},

// 数组更新视图不更新

this.arr[0] = ‘OBKoro1’;

this.arr.length = 1;

console.log(arr);// [‘OBKoro1’];

// 数据更新,对象视图不更新

this.obj.c = ‘OBKoro1’;

delete this.obj.a;

console.log(obj); // {b:2,c:‘OBKoro1’}

解决方法 :

this. $set(你要改变的数组/对象,你要改变的位置/key,你要改成什么value)

数组原生方法触发视图更新( vue官网可查):

整体替换数组/对象

上一篇:利用setInterval做图片切换,定时器案例


下一篇:(18年)文本框输入一个正整数,然后单击begin按钮,系统开始以秒为单位倒计时,倒计时数值同时显示在文本框中,直至数值显示为0结束