Vue3 的 JSX 函数组件,每次更新都会重新运行吗?

我用最直白、最无歧义、100%准确的方式,只回答你这一个问题:

✅ 最终答案(背它)

在 Vue3 中:
你写的 JSX 函数组件,整个函数 只会在组件初始化时运行 1 次!
更新时,整个函数 不会重新执行!


用代码证明

jsx 复制代码
import { ref } from 'vue'

// 这是你的 JSX 函数组件
export default function MyComp() {
  // 👇 整个函数体里的代码,**只执行 1 次!!!**
  console.log("函数执行了 ------ 只出现一次")

  const count = ref(0)

  // 👇 这个返回的渲染函数,**更新时会重新执行**
  return () => {
    console.log("渲染执行 ------ 更新就跑")
    return <div>{count.value}</div>
  }
}

运行结果:

  • 初始化:
    函数执行了 ------ 只出现一次
    渲染执行 ------ 更新就跑

  • 点击更新 count:
    渲染执行 ------ 更新就跑
    函数本身不会再跑!


最核心原理(一句话)

Vue3 把 JSX 函数当作 setup() 来用:
函数本身 = 只跑一次的初始化
返回的函数 = 每次更新都跑的渲染

你写的:

jsx 复制代码
function MyComp() {
  return () => <div />
}

Vue 底层理解为:

js 复制代码
const MyComp = {
  setup() {
    // 这里只执行一次
    return () => <div /> // 这里更新执行
  }
}

最精简总结(面试必背)

Vue3 JSX 函数组件:
组件函数本身 → 只执行 1 次(初始化)
返回的渲染函数 → 更新时会重新执行

绝对不会像 React 那样,整个函数每次更新都从头跑到尾!


Vue3 + React 函数组件执行机制 一张图彻底分清

结合我们之前的对话,我为你整理Vue3 JSX 函数组件 vs React 函数组件的核心执行机制对比,用最清晰的方式帮你彻底区分,同时结合 Vue3 的底层原理,解决你的核心疑问:

Vue3 JSX 函数组件 vs React 函数组件 执行机制对比

对比维度 Vue3 JSX 函数组件 React 函数组件
外层函数执行次数 仅初始化执行1次 每次更新都重新执行
响应式状态创建 仅初始化创建1次 每次更新重新创建
内部函数创建 仅初始化创建1次 每次更新重新创建
闭包陷阱 无(天然规避) 存在(依赖 Hooks 解决)
性能开销 低(无重复创建) 高(需 useMemo/useCallback 优化)
核心机制 setup + 渲染函数分离 函数重执行 + Hooks 状态保存
相关推荐
ZC跨境爬虫3 分钟前
跟着 MDN 学 HTML day_40:(DOMImplementation 接口完全解析)
前端·ui·html·媒体
之歆6 分钟前
DAY_17深度博客:CSS 响应式布局 · BFC · JavaScript 完全指南(上)
javascript·js
Highcharts.js11 分钟前
Highcharts 纯 JavaScript 图表库深度使用评测
开发语言·前端·javascript·功能测试·ecmascript·highcharts·技术评测
码码哈哈0.020 分钟前
基于 RSA 非对称加密与挑战码机制的前端登录安全方案
前端·安全·状态模式
ZC跨境爬虫25 分钟前
跟着 MDN 学 HTML day_39:(DOMException 异常接口完全解析)
前端·javascript·html·媒体
渐儿1 小时前
NestJS 教程 Part 2 — 数据层、API 设计与业务异步
前端
渐儿1 小时前
Next.js 教程 Part 2 — 数据获取、Server Actions 与状态
前端
用户125758524361 小时前
XYGo Admin ArtTable 表格组件:一行代码搞定加载、刷新与分页
前端
用户11489669441051 小时前
Promise解析
javascript·面试