reactjs - 动态他导入后如何挂载React组件
问题描述
尝试在 React 组件中使用此代码:
this.setState({
module: import ('../1superSet/dashboard/containers/Dashboard'), // eslint-disable-line
});
- 必须在某些请求之后导入。下一个:
{this.state.module && this.state.module.then((res) => {
console.log('res', res)
const Dashboard = res
return (<Dashboard />)
})}
但是 React 不能渲染这个,因为 Dashboard 是对象:
“React.createElement:类型无效 - 需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:对象。”
解决方案
您正在尝试渲染Promise
( this.state.module.then
)。您应该加载组件并仅在加载后将其设置在侧面。
foo() {
const Dashboard = await import('../1superSet/dashboard/containers/Dashboard');
this.setState({ Dashboard });
}
然后您可以通过执行以下操作来渲染它:
render() {
const { Dashboard } = this.state;
return (
<div>
{ Dashboard && (<Dashboard/>)
</div>
);
}
查看React.lazy
更多简化和附加功能。
推荐阅读
- php - 如何在 Slim 框架中使用 php 变量?
- sql - 尝试实现内部联接
- javascript - FCM 解析错误:标识符“函数”已被声明
- html - 输入的活动状态标签转换的意外行为
- c - C pthread_t 允许读/写吗?
- javascript - 将 MM 转换为英寸 - Javascript
- sql-server - SQL Server:从每日重复值中获取日期范围
- python - 从 Node 子进程运行带有 scrapy 导入的 Python 脚本
- database - Oracle DB_UNIQUE_NAME 和全局数据库名称的用例是什么
- python - 如何在 python 3 的循环中创建一个计数器?