vue3 在 template 文件中引入 hook js 文件中暴露的 ref 变量,无法监听到 hook js 中对 ref 变量的修改

2023-01-28 17:56:13 +08:00
 857681664

// 自定义 hook useXXX.js

const loadingRef = ref(false)
async () => {
    loadingRef.value = true
    await fetch api
    loadingRef.value = false
}

在 js 文件里都能正常 watch 到 ref 变量的变化,在 template 文件中引入

// xxx.vue

const {loadingRef} = useXXX

这里就无法监听到 ref 变量的变化了,有前端大佬知道这个是什么原因吗,要怎么才能在 template 文件中监听到这个 ref 变量的变化呢

1117 次点击
所在节点    程序员
9 条回复
kingterrors
2023-01-28 18:06:23 +08:00
建议写个可运行的 demo ,比如 sandbox 。理论上不应该在模板上不响应。
kingterrors
2023-01-28 18:08:29 +08:00
Huelse
2023-01-28 18:09:48 +08:00
有 export 吗?
857681664
2023-01-28 18:17:44 +08:00
@kingterrors 好主意,我去写一个最小 demo
857681664
2023-01-28 18:18:01 +08:00
@Huelse export 的是 useXXX 函数,在函数里 return 了 ref 变量
Huelse
2023-01-28 18:26:06 +08:00
@857681664 那应该是使用姿势不对吧,试了下: https://codesandbox.io/s/still-wood-er46w5?file=/src/App.vue
muzlin
2023-01-28 18:31:18 +08:00
@857681664 看看作用域
857681664
2023-01-28 18:32:21 +08:00
@Huelse
@muzlin https://codesandbox.io/s/intelligent-cerf-pbz5xe?file=/src/App.vue ,刚写了个最小 demo ,可以看一下 console 和页面上的值变化
857681664
2023-01-28 18:37:09 +08:00
绝了, demo 里又可以了,但我自己的应用就是不行,我再研究一下,感谢 2 位大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/911128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX