Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用Typescript响应.lazy()_Reactjs_Typescript - Fatal编程技术网

Reactjs 使用Typescript响应.lazy()

Reactjs 使用Typescript响应.lazy(),reactjs,typescript,Reactjs,Typescript,我得到了一个错误: 类型“Element”中缺少属性“default”,但类型中需要该属性 {default:ComponentType;}.ts(2322) {React.lazy(()=>import(`.././i18n/locales/${this.props.lang}')。然后(o=>( ))) } 我读过,但我不知道如何在我的情况下做到这一点 如果你需要更多信息,请告诉我。 谢谢。组件不应该在使用它们的地方声明,这可能会破坏优化,并可能导致无限循环 React.lazy用于动态i

我得到了一个错误:

类型“Element”中缺少属性“default”,但类型中需要该属性 {default:ComponentType;}.ts(2322)

{React.lazy(()=>import(`.././i18n/locales/${this.props.lang}')。然后(o=>(
))) }
我读过,但我不知道如何在我的情况下做到这一点

如果你需要更多信息,请告诉我。
谢谢。

组件不应该在使用它们的地方声明,这可能会破坏优化,并可能导致无限循环

React.lazy
用于动态
import
,回调函数应该返回模块的承诺,即
{default:Component}
对象,但它当前返回React元素的承诺

React.lazy
不是要参数化的,它不接受道具,而且
this.props.lang
不能在那里工作。它应该用另一个组件包裹以接收道具:

const LocalCustomSelects = React.memo(({ lang }) => {
  const Lazy = React.lazy(async () => {
    const o = await import(`../../i18n/locales/${lang}`);
    return { default: props => <CustomSelects ... /> };
  });

  return <Lazy/>;
});
constlocalcustomselects=React.memo({lang})=>{
const Lazy=React.Lazy(异步()=>{
const o=等待导入(`.././i18n/locales/${lang}`);
返回{default:props=>};
});
返回;
});

我尝试过,但对象作为React子对象无效(找到:[object Promise])。然后您尝试了错误的方法。答案中没有承诺。它应该按照我列出的方式工作。如果问题仍然存在,请提供一种复制方法。
const LocalCustomSelects = React.memo(({ lang }) => {
  const Lazy = React.lazy(async () => {
    const o = await import(`../../i18n/locales/${lang}`);
    return { default: props => <CustomSelects ... /> };
  });

  return <Lazy/>;
});