V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bhbhxy  ›  全部回复第 7 页 / 共 14 页
回复总数  272
1  2  3  4  5  6  7  8  9  10 ... 14  
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@shakukansp 专门为这个引入一个库是否增加开发成本
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@zzzzhan 获取新 token 后就是正常接口数据了,是走的正常 response 拦截器,token 失效走的 error
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@yetrun onMounted(() => fetchData())组件获取数据在页面初始化时只执行一次,在 token 失效的情况下,这个请求返回的是 401 未授权,所以由拦截器获取新 token 后重发一次请求获取正确数据,这时候 onMounted 里的方法不会再执行了,也就是没有机会给 list 赋值。重发请求是指再请求一遍接口的 url ,而不是再执行一次组件内的 fetchData
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@yetrun 不是语法问题,不然编译阶段都得报错,只是为了节省篇幅省略了这一部分
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@yetrun token 有效的情况下,list 赋值正常,token 过期后由于是在拦截器层面重发的请求,导致组件内部的 list 没有感知到数据的变化,怎么给重发请求后的 list 赋上值
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@yetrun 发送新的 token 后数据已经获取到了,但这个操作只是重发了请求,并没有给组件内的 list 赋值,因为这一步是在组件外发起的请求,所以应该怎么赋值给组件内的 list
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@yetrun 不关注语法层面,伪代码只是为了方便看出代码逻辑。
我在封装好的 request.js 写了 axios 的拦截器:
service.interceptors.response.use(
async error => {
if(statusCode === 401) {
await getNewToken();
return service.request(error.response.config) //重发请求
}

return Promise.reject(error);
}
)

而我在组件内获取数据是这样写的:
fetchData() {
//调用接口获取数据
//给响应式变量 list 赋值
}
onMounted(() => fetchData())

在 token 有效的情况下,数据正确展示,如果 token 无效,就先到代码片段一中获取新 token 再发一次请求,这个请求获取到新数据后,怎么赋值给组件内的 list
302 天前
回复了 guguji5 创建的主题 职场话题 有人在工位抽电子烟怎么办
在工位抽也太那什么了吧,我在的单位没有哪个允许在工位抽的,都是到楼梯间,厕所,吸烟区
302 天前
回复了 SGL 创建的主题 程序员 为什么要进大公司呢
小公司领导和谁关系好,年终就给谁评优秀员工,项目也分钱多的给谁做,小项目又难做的分给边缘人做。要什么资源什么资源没有,需求全靠自己想象,跑业务的连客户想要什么都不知道就把单子接回来了。同事、领导废材多,不学无术。
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@shakukansp 不关注语法层面,我只是随手写了一下,ChildComponent 在页面初始化时如果 token 有效,会返回{code:0, data: [......], msg:""},此时是展示数据的,如果 token 失效,会返回{code:-1, data:null, msg:'token invalid'},此时不展示数据,现在使用 axios 重发请求,只是重发,重发获取的数据怎么塞到这个组件的 list 里,用 prop 传值 然后 watch 监听?还是有更专业的做法,这样是不是意味着我要把组件自身维护的数据都提取到外部窗器中来
return axios.request(response.config) 重发了请求,这个代码写在全局拦截器里,组件内是不知道重新发起了一次请求的,所以 list 还是原来的空值
302 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@shakukansp 这是为了方便起见随手敲的代码,原始代码是 const list = reactive({list:[]})
天堂有路你不走,地狱无门自来投
303 天前
回复了 langmanxiaoa 创建的主题 问与答 大伙一个月能存多少钱?
能存工资-1000 固定支出(油费、电话宽带、燃气、水费、物业费、电费等等),吃饭单位免费
这年头就是一篮鸡蛋,一本书离开人一小会,都会被人拿走,更不用说车了。有人会说,摄像头拍到小偷了啊,等真正遇到这种情况,你能得到的大多数答复就是回家等消息,最后不了了之。
304 天前
回复了 vsitebon 创建的主题 游戏 潜水员戴夫是真的好玩
看过视频,感觉不适合我,比较喜欢 AVG 和第三人称 ACT
304 天前
回复了 caEsIum 创建的主题 Apple 有一些奇怪的喜好
雙飛燕路过
307 天前
回复了 Jaeden 创建的主题 问与答 你最喜欢吃的零食(百吃不厌)是什么?
油炸类零食都喜欢,但是目前已经戒了
@xqdoo00o 这个只能在选中标签文本的情况下才能改,如果没选中的话不行,使用插件在尖括号内的任何改动都会和闭合标签同步,ws 内置此功能
1  2  3  4  5  6  7  8  9  10 ... 14  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3399 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 11:53 · PVG 19:53 · LAX 04:53 · JFK 07:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.