我尝试使用import()
来动态加载组件,但是没有成功。相比之下,React.lazy
似乎更加可靠。
App.js
import React, { useState } from 'react';
function App() {
const [Com, setCom] = useState(null);
const handleClick = () => {
import("./A.js").then(c => {
//console.log(c.default)
setCom(c.default)
})
}
return (
<div>
<button onClick={handleClick}>Load</button>
{ Com ? <Com /> : null }
</div>
);
}
export default App;
A.js
import React from "react";
export default function A () {
return (<div>A</div>)
}
错误:元素类型无效:应该是字符串(用于内置组件)或类/函数(用于复合组件),但却是:对象。
实际上,我打印出了 c.default
。它确实是一个函数。
c.default
ƒ A() {
return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
__source: {
fileName: _jsxFileName,
lineNumber: 4
},
__self: this
}, "A");
}