R后悔药 Rue.js
  • 首页
    • 深度指南
    • 实战例子
    • 快速上手
    • 路由指南
    • 术语表
    • 错误代码参考
  • API
    • 合作伙伴
    • 插件
    • 组件库
    • 工具链
    • Text.js
    • 新闻简报
    • 常见问题
    • 团队
    • 版本发布
    • 社区指南
    • 行为规范
    • 隐私政策
  • 赞助
  • 合作伙伴
设置
目录统计
总条目95
  • 你好,世界
  • 处理输入
  • Attribute 绑定
  • 条件与循环
  • Compiled 顶层控制流
  • 表单绑定
  • 简单组件
  • useApp().component 注册
  • Reactive Props Destructure
  • Props 与 useSetup
  • Slots 插槽
  • 原生 Web Components
  • Web Components 分项测试
  • 基础元素与自闭合标签
  • 表达式与插值
  • 属性、className、style 与 Props
  • 对象展开属性(spread props)
  • 条件渲染(?:、&&、null)
  • v-if / r-if 指令
  • v-show / r-show 指令
  • v-pre / r-pre 指令
  • v-once / r-once 指令
  • v-memo / r-memo 指令
  • v-text / r-text 指令
  • v-html / r-html 指令
  • v-on / r-on 指令
  • v-model / r-model 指令
  • 列表渲染与 key
  • v-for / r-for 指令
  • Template 无包装容器
  • Scoped Style 组件作用域样式
  • Fragments(<> … </>)
  • children 插槽与嵌套
  • 组件与 Props 传递
  • 动态组件(Component)
  • Suspense 异步边界
  • 异步组件懒水合
  • 事件处理
  • 受控输入
  • Refs 基础
  • Markdown 编辑器
  • 获取数据
  • 服务端预取
  • 资源
  • 资源(纯 JSX)
  • Context
  • 语言切换(_ 模型)
  • 路由 Demo:总览(嵌套路由)
  • 路由 Demo:守卫(beforeEnter)
  • 路由 Demo:实验页(受守卫保护)
  • 基础计数器
  • shallowRef 浅层 ref
  • triggerRef 手动触发
  • onActivated 缓存生命周期
  • Signal 路径读写
  • 独立 Signal 与派生值
  • isRef 判定示例
  • 无代理状态模型
  • 只读派生值
  • nextTick 真实业务场景
  • onScopeDispose 作用域清理
  • 渲染函数计数器
  • onRenderTriggered 调试
  • onDeactivated
  • onErrorCaptured 错误捕获
  • useState 计数器
  • useState 与局部快照
  • 条件渲染
  • map 列表渲染
  • JSX 数组子节点
  • 组件插槽中的 JSX 数组
  • Todo 应用
  • 基础待办事项
  • 本地待办事项
  • 用户资料编辑
  • useState 数组
  • useState 对象
  • 本地 ref 计数器
  • 排序、筛选与网格
  • Store Query Sync 与 URL 状态
  • 树状视图
  • SVG 图表
  • SVG 共享标签命名空间
  • 带过渡动效的模态框
  • Transition mode
  • 子调父方法
  • 父控子计数
  • 组件级 v-model
  • 命名 v-model
  • 组件 emit
  • Hello children
  • 基础 children Box
  • 嵌套 children Box
  • Layout children
  • 过渡动效
Experimental Compiler Demo

Compiled setup regions

入口、中段和末段 region 首次可达时分别初始化;离开后缓存保留,compiled signal 与普通 Rue ref 继续直接驱动控制流 DOM。

region setup 次数:入口 1 / 中段 0 / 末段 0
A initial · 首次挂载
先修改 A,再切换到 B/C 并修改,最后返回旧分支:状态文本会保留,顶部每个 region 的 setup 次数仍为 1。
Supported Shape
const CompiledBranchCard = props => {
  const entrySetupId = beginRegion('entry')
  const entryPrefix = 'entry'
  const entrySuffix = 'state'
  const bumpEntryValue = value => value + 1
  const entryCompiled = compiledSignal(1)
  const entryRef = ref(10)
  let entryStep = 0
  regionControls[0] = () => {
    if (entryStep === 0) entryCompiled.update(bumpEntryValue)
    else entryRef.value += 10
    entryStep += 1
  }

  if (props.mode === 0 && entryCompiled.get() === 1 && entryRef.value === 10)
    return <div>A initial · {props.label}</div>
  if (props.mode === 0 && entryRef.value === 10)
    return <div>A compiled signal changed · {props.label}</div>
  if (props.mode === 0) return <div>A Rue ref changed · {props.label}</div>

  const middleSetupId = beginRegion('middle')
  const hello = 'hello'
  const middleSuffix = 'region'
  function bumpMiddleValue(value) { return value + 1 }
  const middleCompiled = compiledSignal(2)
  const middleRef = ref(20)
  regionControls[1] = () => {
    middleCompiled.update(bumpMiddleValue)
    middleRef.value += 10
  }
  if (props.mode === 1 && middleCompiled.get() === 2 && middleRef.value === 20)
    return <section>B initial · {props.label}</section>
  if (props.mode === 1) return <section>B state retained · {props.label}</section>

  const finalSetupId = beginRegion('final')
  const world = 'world'
  const finalSuffix = 'region'
  const bumpFinalValue = value => value + 1
  const finalCompiled = compiledSignal(3)
  const finalRef = ref(30)
  regionControls[2] = () => {
    finalCompiled.update(bumpFinalValue)
    finalRef.value += 10
  }
  if (finalCompiled.get() === 3 && finalRef.value === 30)
    return <article>C initial · {props.label}</article>
  return <article>C state retained · {props.label}</article>
}
当前边界:仅分析顶层 early-return 可达区域;循环、switch、try/catch 等任意嵌套区域分析不在本示例支持范围内。依赖 props 的实时派生表达式不会冻结为 setup 快照。
页内导航
文档
  • 深度指南
  • 实战例子
  • 快速上手
  • 术语表
  • 错误码参照表
关于
  • 常见问题
  • 团队
  • 版本发布
  • 社区指南
生态
  • 插件
  • 组件库
  • 路由指南
  • Text.js
© 2024-2026 Xiangmin Liu
Rue.JS