1.vue-router配置路由,当当前路径与跳转路径一致时,会报错。NavigationDuplicated:避免冗余导航到当前位置:所以在路由器的js中修改,添加importRouterfrom'vue-router'//修改路由器的跳转事件,取消错误提示。constoriginalReplace=Router.prototype.replaceconstoriginalPush=Router.prototype.pushRouter.prototype.replace=functionreplace(location){returnoriginalReplace.call(this,location).catch(err=>err)}Router.prototype.push复制代码=functionpush(location){returnoriginalPush.call(this,location).catch(err=>err)}2.上传文件接口不能接受参数。在axios数据的headers中添加'Content-Type':'multipart/form-',使用FormData函数constformData=newFormData()fileList.forEach((file)=>{formData.append('file',file)}axios.post(url,formData,{headers:{'Content-Type':'multipart/form-data',}})3.给input赋值时,该值不能重组两次letobj=[{a:1,b:2}]//错误obj=[{a:1,b:3}]//正确obj[0].a=1;obj[0].b=34.监听时数据或对象,当获取的新值与旧值一致时data(){obj:[{a:1}]},watch:{newObj:{handler(new,old){},deep:true}},computed:{newObj(){returnJSON.parse(JSON.stringify(this.obj))}}5.使用keep-alive和vue-router进行页面缓存使用场景:A列表页?B详情页,缓存A列表页面的视图,这样A就不会被销毁。当B?A时,可以看到跳转前的数据。当A?B?C?A时,A不会被缓存并重新渲染。当A?C时,A同上。此时需要配置的路由信息??//vuerouter"A":{"meta":{"keepAlive":true}模板页面(只要你用router-view)<路由器视图>listpagebeforeRouteEnter(to,from,next){if(from.path=='B'){to.meta.keepAlive=true}next()},beforeRouteLeave(to,from,next){from.meta.keepAlive=falsenext()}提示:在router-view使用v-if之前切换一两次页面是正常的,但是后面会出错。估计router-view不能正常支持v-if。因为在router-view中使用v-show是可以正常显示的,但是使用v-show会渲染两次数据,所以我用一个label包裹router-view,然后用v-if,label不一定要用transition,还有div也可以。6.当列表页使用keepalive缓存和vue-infinite-scroll插件时的bug。场景:未使用keepalive前:访问页面默认触发vue-infinite-scroll的v-infinite-scroll(滚动到底部时触发该函数)使用keepalive后:由于页面缓存,列表页为没有销毁,详情页返回列表页就可以了。但是问题是从其他页面(C)跳转到列表页面时,应该触发的v-infinite-scroll没有执行。只有当C页的滚动条向下滑动到某个位置,然后跳转到列表页时,才会触发滚动功能。或者从一开始就在C中,不需要向下滑动滚动条,直接跳转到列表页,也可以触发滚动功能。第一个原因:跳转到页面时,虽然还没有显示列表页,但是html已经有了,滚动条不在最上面,所以会触发v-infinite-scroll。原因二:页面还没有加载,所以会触发v-infinite-scroll。但是按照这个,当离开列表页跳转到C时,列表页应该被销毁了。v-infinite-scroll应该触发,但它并没有触发。以上bug的出现与keepalive没有直接关系,所以在排查和解决问题的时候,根本没有办法解决。但是问题发生在使用了keepalive之后,所以也不能说无所谓……个人认为vue-infinite-scroll可能存在bug。但问题出现了,需要迅速解决。所以很无奈在实例挂载后使用//Triggermounted(){document.getElementsByClassName('ant-layout')[1].scrollTop=21},让滚动条向下滑动触发v-infinite-滚动事件。由于我的UI框架使用ant,所以dom对象是ant-layout。滚动条不一定在正文中。解决的时候检查滚动条是哪个dom对象。持续更新