为什么 Vue 允许 onMounted 的回调函数是异步的呢?
为什么 Vue 允许 onMounted 的回调函数是异步的呢?由于之前是写 react 的,但是在 react 中 useEffect 接受的回调函数是不允许是异步的。下面是.jsx 文件会报出以下错误:
-----------------------分割线---------------------而在 Vue 里,对标的生命周期函数 onMounted 的回调函数却可以变成异步的
按照我的理解来讲,onMounted 本身的这个回调函数是不可以接受异步函数的。 是我哪里理解错了吗关注者1
回复
1个回答

test
2024-07-18
因为在 Vue 中的副作用(如果有),可以在 beforeUnmount
生命周期函数中去处理,所以,如楼上所言, Vue 无需关心onMounted
的执行结果。而 React 的副作用(如果有),理应由 useEffect
返回一个函数中来处理:
useEffect(() => {
const timer = window.setInterval(() => {
// 定时任务
}, 1e3);
// 这里实际上类似 Vue 中的 beforeUnmount
return () => {
window.clearInterval();
}
})
当没有副作用的时候,可以不返回函数,所以useEffect
的回调要么返回 undefined
,要么返回函数。而 async
函数的返回值是 Promise
,不在这二者之列。至于为什么要这样规定,大概是为了流程可控吧,感兴趣的可以去看 React 源代码。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容