bug51
V2EX  ›  Vue.js

还有人在 setup 里面获取 vue2 的 data 么?

By bug51 at 2024 年 7 月 17 日 · 2431 次点击

今天看到一个后端同事提交的代码。在 setup 里面获取“vue2 的 data 选项”,然后拿这个 data 数据作为“请求参数”,在 setup 里面使用这个 data 数据来请求。

说来也是很奇怪,vue 文档有一部分没解释清楚的,这就是第二个问题:setup 在生命周期排在 created 前面,为啥可以在 setup 里面直接拿 setup 数据去请求?

个人理解就是 setup 里面可以创建一批(在 setup 里面声明的)响应式数据 data 。“vue2 的 data”可以再创建另外一批响应式数据 data ,时机在 setup 后的且在 beforeCreate 后的。一共两批 data ,都创建在 created 之前。

解释回第二个问题,“setup 在生命周期排在 created 前面,为啥可以在 setup 里面直接拿 setup 数据去请求”,就是因为 setup 里面创建一批自己的响应式数据 data ,比“vue2 的 data”早创建。所以,“vue2 的 data”还没创建,不太建议拿到 setup 中去作为“请求参数”来请求,也就是解释开始的问题。

以上纯属个人的猜想,拿生命周期打印了一下还是有点懵。。。

4 条回复  •  2024-07-17 18:04:19 +08:00
bug51
   1
bug51  
OP
   2024 年 7 月 17 日
lDqe4OE6iOEUQNM7
   2
lDqe4OE6iOEUQNM7  
   2024 年 7 月 17 日
因为在 setup 调用时候,Vue 2 的 data 还未初始化。
revalue
   3
revalue  
   2024 年 7 月 17 日
setep 创建的响应式是`setupState`吧,所以比 beforeCreate 早,比 vue2 的 data 早,比 created 早
revalue
   4
revalue  
   2024 年 7 月 17 日
setup 里面做的 ajax 请求,请求参数一般拿的是 setupState 的
© 2026 V2EX · 29ms · 3.9.8.5