最近使用Vue写了一点前端页面,由于第一次使用Vue,遇到了不少问题,所有在此记录一下
1.作用域的问题
Vue调用方法的时候,使用this.的方式进行调用,但在封装的http请求中,成功或失败使用回调函数时,this就会失效,可以有两种方法
1.使用let that = this; 将this保存在另一个变量中,回调函数中是可以使用that的
2.使用箭头函数 ()=>{} 箭头函数中可以获取到this作用域,个人感觉使用还是很方便的
2.Vue初始化的生命周期,有created()和mounted()方法
created调用的时候,data和methods已经初始化完成,dom还未挂载,不能获取dom的任何数据,mounted阶段,dom已经加载完毕
一般在created方法中进行页面数据的初始化
3.v-for循环key问题
v-for循环是经常使用的数据渲染方法,在使用时需要注意key的使用,key最好是唯一的标识
使用默认的index索引作为key容易在数据删除时出现数据异常!
:key="Math.random()" 可以尝试,但听说会造成卡死现象,我使用了,可能因为数据量少的原因倒是没有出现卡死,最好是使用后台的唯一id标识啥的
4.Vue强制刷新
Vue直接修改数组或对象的某个值可能会造成数据修改,但未刷新到页面的情况
this.$forceUpdate(); 强制刷新
this.$set(对象, 对象属性, 值); 使用这种方式修改也可以直接刷新
5.Vue父类监听子类方法的触发
1.子类industry-category
在方法中标识方法on-selector-industry-callback 和参数 this.xxx
子类点击时
function(){
this.$emit('on-selector-industry-callback', this.xxx);
}
2.父类在使用子类组件的时候,监听方法,并写自己的方法pfunc
<industry-category @on-selector-industry-callback="pfunc"></industry-category>
子类点击时会调用pfunc方法
3.当父类监听子类的方法时,想传入自己的参数
3.1单参数时,用$event表示子类的参数,后面是自己的参数
@input="diceChange($event, item)
3.2多参数时,用arguments 数组表示子类参数,我还没有测试
@input="diceChange(arguments, item)
6.强制刷新子组件
使用了封装好的Vue组件,数据修改之后页面没有刷新,强制刷新也不行,然后尝试了这种暴力的方法
v-if="show"
this.show = false;
this.$nextTick(() => {
this.show = true
});
7.from表单回车刷新问题
当from表单只有1个输入框的时候,按回车会导致表单提交,也是实在没想到 0.0
可以增加一个隐藏的输入框即可