javascript - TypeScript + React.Lazy
问题描述
const Game = React.lazy(() => new Promise( (resolve) => {
setTimeout( () => resolve(import('./Game')) , 1000)
}))
错误:错误:(6、35)TS2345:'Promise<typeof import("D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game")>' 类型的参数不可分配到类型参数'{默认值:从不;} | PromiseLike<{ 默认值:从不;}> | 不明确的'。类型 'Promise<typeof import("D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game")>' 不可分配给类型 'PromiseLike<{ 默认值:从不;}>'。'then' 的属性类型不兼容。类型 '<TResult1 = typeof import("D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game"), TResult2 = never>(onfulfilled?: ((value: typeof import(" D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game")) => 结果1 | PromiseLike<...>) | 空 | undefined, onrejected?: ((reaso...' is notassignable to type '<TResult1 = { default: never; }, TResult2 = never>(onfulfilled?: ((value: { default: never; }) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<...>) | null | undefined) => PromiseLike<...>'. 参数类型 'onfulfilled' 和'onfulfilled' 不兼容。参数 'value' 和 'value' 的类型不兼容。类型 'typeof import("D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components 中缺少属性 'default' /Stages/Game")' 但在类型“{默认值:从不;}”中是必需的。不可分配给类型 '<TResult1 = { 默认值:从不;}, TResult2 = never>(onfulfilled?: ((value: { default: never; }) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<... >) | null | undefined) => PromiseLike<...>'。参数“onfulfilled”和“onfulfilled”的类型不兼容。参数 'value' 和 'value' 的类型不兼容。类型'typeof import(“D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game”)'中缺少属性'default',但类型'{默认值:从不; }'。不可分配给类型 '<TResult1 = { 默认值:从不;}, TResult2 = never>(onfulfilled?: ((value: { default: never; }) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<... >) | null | undefined) => PromiseLike<...>'。参数“onfulfilled”和“onfulfilled”的类型不兼容。参数 'value' 和 'value' 的类型不兼容。类型'typeof import(“D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game”)'中缺少属性'default',但类型'{默认值:从不; }'。任何)=> TResult2 | PromiseLike<...>) | 空 | 未定义)=> PromiseLike<...>'。参数“onfulfilled”和“onfulfilled”的类型不兼容。参数 'value' 和 'value' 的类型不兼容。类型'typeof import(“D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game”)'中缺少属性'default',但类型'{默认值:从不; }'。任何)=> TResult2 | PromiseLike<...>) | 空 | 未定义)=> PromiseLike<...>'。参数“onfulfilled”和“onfulfilled”的类型不兼容。参数 'value' 和 'value' 的类型不兼容。类型'typeof import(“D:/PROGECTS/SnakeReactReduxTS/snake-react-redux-ts/src/Components/Stages/Game”)'中缺少属性'default',但类型'{默认值:从不; }'。
他想从我这里得到什么?
解决方案
lazy
函数返回一个 {default: ... } 对象的承诺,该对象被异步调用,await
直到承诺未被解决,延迟,1000 ms
最后将导入Game
组件并返回它。
const Game = React.lazy(async () => {
await new Promise(resolve => setTimeout(resolve, 1000));
return import('./Game');
});
希望这可以帮助!!
推荐阅读
- c++ - 在编译时参数未知时创建 execv 参数数组
- r - 将标签添加到 R 中的分类点边界
- json - pyspark 在 json 列上应用 udf
- typescript - 替换库 react-native-toast-message 前导图标
- c# - 关于调用 ChildForm
- python-3.x - 我的IMAC 27"指向python2.7如何更新
- google-bigquery - 在 BigQuery 中,如何形成包含 REPEATED 记录而不是 NULLABLE 记录的 SQL
- ios - 颤振 - WebViewController 中的 HTML 文件未在 iOS 模拟器中按预期加载
- racket - 替代使用 boolean=?
- drupal - 如何在 Drupal 8/9 中调用外部 API