Suspense 异步边界
1. 一个边界等待多个异步组件
逻辑:useComponent 默认会把 pending promise 登记到最近的 Suspense;边界收集到任意 pending 后显示 fallback,等全部 resolve 后再恢复 children。
正在加载销售看板
收入组件和活动流组件会一起由这个边界等待
2. 内层边界交给父 Suspense
左边是默认嵌套:外层绿色框还在,只显示黄色的内层 fallback。右边开启 suspensible:内层 pending 被继续登记到父边界,绿色外层框会整块被父级 fallback 替换。
默认:内层自己处理
外层框保持可见默认嵌套边界
这块绿色区域代表外层 children。是否被替换,是两个场景最明显的区别。
内层 fallback 可见
默认:内层 fallback 正在加载
只有内部插槽被替换,绿色外层框没有消失
开启:交给父级接管
外层框会被替换父级 fallback 接管整块外层内容
右侧绿色外层框加载期间不可见,因为 pending 被转发给父边界
3. 退出 Suspense 控制
逻辑:这是组件级开关。useComponent 设置 suspensible: false 后不会向最近边界登记 pending,因此外层 fallback 不会显示,组件自己的 loading 负责占位。
本地 loading:这个异步组件设置了 suspensible: false
提示:useComponent 的 loader 会按函数引用缓存。刷新页面能重新看到首屏 fallback;同一页面内再次渲染已加载组件会直接命中缓存。