Reactjs 使用Typescript响应.lazy()
我得到了一个错误: 类型“Element”中缺少属性“default”,但类型中需要该属性 {default:ComponentType;}.ts(2322)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
{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/>;
});