V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  yetrun  ›  全部回复第 2 页 / 共 5 页
回复总数  84
1  2  3  4  5  
284 天前
回复了 sunny1688 创建的主题 程序员 请教一下 TypeScript 装饰器的用法
装饰器尚在试验阶段,没有大规模铺开来用,别用。尤其是自己发布的包或者项目,别用,可能过几年就用不了了。
我的项目还没人 star ,寻求 star 和关注额:

> https://github.com/yetrun/web-frame

不过比寻求 star 更重要的,希望大家能认真看一看,可以一起加群讨论下。
加一个得多敲 1 、2 、3…… 15 个字符呢,不费劲吗?所以干脆就不敲了。
307 天前
回复了 Shiweizhi 创建的主题 Linux 感觉 xfce 桌面好快
快,但也啥效果没有
308 天前
回复了 yetrun 创建的主题 Vue.js 如何从页面元素跳转到项目源代码?
@ochatokori 啊,也感谢你,通过 el.__vueParentComponent.parent.parent.parent.type 也找到了
308 天前
回复了 yetrun 创建的主题 Vue.js 如何从页面元素跳转到项目源代码?
@you222 对对,就是这个帖子。但我记得也有一个 Vue 的方案,是作者和他表哥一起做的。
308 天前
回复了 yetrun 创建的主题 Vue.js 如何从页面元素跳转到项目源代码?
@retanoj 再怎么按钮也没用,这是在 devtools 内部,我要的是在页面内部。我如果已经在 devtools 内部,说明我就知道组件名了,就可以直接找到对应的源码了。

比如,我在页面下的 `<div>xxx</div>`,通过某种方式知道它是属于哪个组件的?
308 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@bhbhxy 我没说语法问题,说的是用法问题。你仔细看下我的回答啊。
308 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@bhbhxy 我检查了一下 axios 拦截器的文档,发现确实和你的写法有点出入:

axios.interceptors.response.use(function (response) {
// 正常请求
return response;
}, async function (error) {
// 异常请求
if(statusCode === 401) {
await getNewToken()
return await axios.request(response.config);
} else {
return await Promise.reject(error);
}
});

要写在第二个参数。
308 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@bhbhxy 你的问题是因为 token 过期导致 list 赋值失败,还是单纯地想问如何给 list 赋值这个问题?如果 token 没过期,list 赋值正常吗?
308 天前
回复了 yetrun 创建的主题 Vue.js 如何从页面元素跳转到项目源代码?
@hymxm 我要的效果是反过来的,知道页面的元素,不知道对应的组件。
308 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
@bhbhxy 你的逻辑没问题,只能关注代码层面了。细节导致 Bug. 我只是举个例子,其他的地方你要注意。这个是 Debug ,不是帮你判断逻辑有没有问题。这个也不是伪代码,而是省略的代码。省略的代码可以,但突出的地方一定要突出,就像我上面提到的,该 await 的地方一定要 await ,否则整个结构就说不通了会导致错误。

按照你现在的代码格式,大体上是没问题了。不过既然你用到了异步 async 了,那么不要再返回 Promise 了,使用 await 保持一致性:

return await service.request(error.response.config)
return await Promise.reject(error)

如果还有问题,可能在这:

return await service.request(error.response.config) // 新获取的 Token 写进去了吗?
webstorm 和 vscode 都用过,对于 Vue3 + TS 项目,我发现类型提示上 vscode 比 webstorm 多,特别是 template 块
308 天前
回复了 bhbhxy 创建的主题 Vue.js axios 重发请求后数据如何重新渲染
示例代码还是得认真写一下,不然看的人会产生歧义。我举个例子:

getNewToken() // 这个是异步吗?
return axios.request(response.config);

如果是异步,整个代码结构就不对了,改成下面的格式:

await getNewToken()
return await axios.request(response.config)
311 天前
回复了 yetrun 创建的主题 Vue.js 准备写一个关于 Vue 的系列文章
@utfs8889 你这是一个代码共享和协作的平台吗?能否发一个例子给我看看额?
314 天前
回复了 tangjinzhou 创建的主题 程序员 自由职业后第一个 saas 产品发布了
看起来是重复造了一个轮子。期待一下上线的业绩,了解下做现有产品的优化能否作为成功的一个路径。
@allzc 对不起,今天才看到。你的代码不够简短啊,而且排版还不够好,这不好看懂。如果你确实遇到问题了,建议你将代码精简到只复现问题的部分,保证代码足够简短方便讨论。如果确实要上传这么复杂的代码,建议你将出问题的代码打包成一个项目上传到 stackblitz 或 Github 这样的地方,并保证能够复现,方便我们直接拉取项目针对性地解决问题。

---分折线---

我还是稍微看了下代码,尝试性地给你个答复吧。我看到你的组件 A 的代码,我暂且理解为这是你控制显隐的其中一个组件。我看到你将 v-if 放在组件内部的一个 div 了:

<div v-if="compInfo.compState">......</div>

这样是不会触发组件 A 的 onMounted 方法的。

另一个方面,你的 useWatchComp 方法作为你用到的一个公共钩子函数,我尝试的理解是,你在这里面想自己去做一套回调的逻辑,在组件初次加载和组件信息变动时,去执行你传进来的 onMountedFunc 函数。但由于是你自己管理的逻辑,与 Vue 组件生命周期无关了。所以你的问题不应该是“用 pinia 导致不二次触发 onMounted”,而应该是“你想通过 pinia 集中控制 Vue 组件的显隐,并在组件每次执行时执行一个 onMountedFunc 函数,但从第二次显示开始这个函数都不执行了"。

我对 pinia 不熟,再加上代码排版看上去不好,导致我现在没法就这个问题给你解答。应该是某处出现了一个隐藏的 Bug 导致你的问题出现。但如果是我理解的那个样子,那这个问题应该是限制在 pinia 的专业问题,与 Vue 本身应该没有关系了。

---分折线---

最后我总结一下,onMounted 是 Vue 组件生命周期的一部份,在一个组件实例加载过程中只会执行一次。Pinia 的加入不会改变这个基本的逻辑。

你的问题是想用 pinia 管理一下自己的逻辑,比如每次组件显示的时候执行一个自定义的加载函数 onMountedFunc. 那如果是这样,就不要用 onMounted 来指代了,因为它是 Vue 生命周期的一个回调函数,很容易引起歧义。用 onMountedFunc 来表达你的意思就好。
你这问题应该与 pinia 无关,onMounted 只会在组件初始化时运行一次。你可以贴一个简短的代码,表达一下你的意思。
336 天前
回复了 Hamm 创建的主题 Vue.js Vue3+TypeScript 的另一种另类的打开方式
https://gitee.com/hamm/AirPowerDemo

打不开,Why Why Why ?
Java 都没前途哪个还有前途
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1189 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 921ms · UTC 18:30 · PVG 02:30 · LAX 11:30 · JFK 14:30
Developed with CodeLauncher
♥ Do have faith in what you're doing.