常数 某些组件 = 懒惰的 ( 负载 )
参考
惰性(负载)
进口 { 懒惰的 } 从 “反应” ;
常数 标记预览 = 懒惰的 ( ( ) => 进口 ( './ MarkdownPreview.js' ) ) ;
参数
负载 :返回 承诺 或其他 那么就可以了 (带有 然后 方法)。 React不会调用 负载 直到您第一次尝试呈现返回的组件。 React首次调用后 负载 ,它将等待其解析,然后呈现解析值的 默认值 作为反应组分。 返回的Promise和Promise的解析值都将被缓存,因此React不会调用 负载 不止一次。 如果Promise拒绝,React会 扔 要处理的最近错误边界的拒绝原因。
退换商品
负载
功能
参数
退换商品
用法
带悬架的延迟加载部件
进口 标记预览 从 './ MarkdownPreview.js' ;
进口 { 懒惰的 } 从 “反应” ;
常数 标记预览 = 懒惰的 ( ( ) => 进口 ( './ MarkdownPreview.js'标记预览.js' ) ) ;
< 暂停 退路 = { < 加载 /> } >
< 氢气 > 预览 </ 氢气 >
< 标记预览 />
</ 暂停 >
进口 { 使用状态 , 暂停 , 懒惰的 } 从 “反应” ; 进口 加载 从 './ 正在加载.js ; 常数 标记预览 = 懒惰的 ( ( ) => 延迟演示 ( 进口 ( './ MarkdownPreview.js' ) ) ) ; 出口 违约 功能 标记编辑器 ( ) { 常数 [ showPreview(显示预览) , 设置显示预览 ] = 使用状态 ( 假 ) ; 常数 [ 降价 , 设置降价 ] = 使用状态 ( “你好,**世界**!” ) ; 返回 ( < > < 文本区域 价值 = { 降价 } onChange(更改时) = { e(电子) => 设置降价 ( e(电子) . 目标 . 价值 ) } /> < 标签 > < 输入 类型 = “复选框” 选中的 = { showPreview(显示预览) } onChange(更改时) = { e(电子) => 设置显示预览 ( e(电子) . 目标 . 选中的 ) } /> 显示预览 </ 标签 > < 小时 /> { showPreview(显示预览) && ( < 暂停 退路 = { < 加载 /> } > < 氢气 > 预览 </ 氢气 > < 标记预览 降价 = { 降价 } /> </ 暂停 > ) } </ > ) ; } //添加固定延迟,以便您可以查看加载状态 功能 延迟演示 ( 承诺 ) { 返回 新的 承诺 ( 决定 => { 设置超时 ( 决定 , 2000 ) ; } ) . 然后 ( ( ) => 承诺 ) ; }
故障排除
我的 懒惰的
组件的状态意外重置
进口 { 懒惰的 } 从 “反应” ;
功能 编辑器 ( ) {
// 🔴 错误:这将导致在重新渲染时重置所有状态
常数 标记预览 = 懒惰的 ( ( ) => 进口 ( './ MarkdownPreview.js' ) ) ;
// ...
}
进口 { 懒惰的 } 从 “反应” ;
// ✅ 好:在组件外声明惰性组件
常数 标记预览 = 懒惰的 ( ( ) => 进口 ( './ MarkdownPreview.js' ) ) ;
功能 编辑器 ( ) {
// ...
}