我有一个像这样的asynccomponent:
export default (getter: Function) => {
return class extends Component<any, {
component: null | typeof React.Component
}> {
constructor(props: any) {
super(props);
this.state = {
component: null
};
}
componentDidMount() {
getter().then((res: AsyncComponentModuleType) => {
this.setState({
component: res.default
});
});
}
render() {
const C = this.state.component;
return C ? <C {...this.props} /> : null;
}
};
};
但是当我使用钩子+功能组件
export default (getter: Function) => {
return (props: any) => {
const [Comp, setComponent] = useState(null as null | typeof React.Component);
useEffect(() => {
getter().then((res: AsyncComponentModuleType) => {
setComponent(res.default);
})
}, []);
return Comp ? <Comp {...props} /> : <p></p>;
};
}
它抛出错误
元素类型无效:应使用字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象。