日常bug总结
1.post请求所有的对象数据都要序列化
http.interceptors.request.use((config)=>{
config.header['x-Token']="sdada";
if(config.method.toLowerCase()=='post'){
Object.keys(config.data).forEach((elem)=>{
if(typeof(config.data[elem])=='object'){
config.data[elem]=JSON.stringify(config.data[elem])
}
})
}
return Promise.resolve(config)
})
2.异步请求
场景
A页面是数据获取并展示页面,B页面是详情页面数据由上一个页面传递,C页面是操作页面
C通过操作与服务器交互完成修改,此时需要更新B页面的数据,B页面的数据又是A页面通过路由传参获取得到的,所以需要告诉A页面重新获取下服务器的数据,并重新模拟一个路由跳转把参数重新传递一遍,以此来刷新B页面的视图。
但是A页面获取数据又是10个异步请求,无法判断什么时候请求完事。
1.如何告诉A页面重新获取数据
通过在C页面的commit来改变vuex中的state,A页面通过监听vuex中的state来触发更新
2.如何判断异步请求完事了,并进行排序
一开始采用的是for循环加async/await来保证同步,但是会出现乱序,需要保证全部请求完之后再进行排序。请求完毕的点又无法得知,后采用Promise.all
Promise.all(this.machineStatusList.map((machine)=>{return this.getMachineDetail(machine.MachineNum)}))
Promise.all 的异步或同步”示例。返回值将会按照参数内的 promise 顺序排列,而不是由调用 promise 的完成顺序决定
3.使用let声明的全局变量,不会成为window的属性:
var age=11
console.log(window.age) //11
let sex=1
console.log(window.sex) //undefined
3.a标签
- 默认本页打开
- 新页面打开
<a href="" target="_blank"></a>
4.饿了么导航高亮刷新丢失
- :default-active="$route.path"
5.传e参数
- func(参数1,$event)
6.&&写法
&&接函数或者(表达式)
7.箭头函数省略return
- 对象 ({})
- 函数 (fun())
- 表达式 xx