【发布时间】:2021-09-23 05:17:08
【问题描述】:
我有一个文件(在本例中为 Test.js),将来会有许多小组件(目前只有 Test 和 SuperTest)。
我不想导入整个文件以优化性能。我尝试只导入我需要的组件。不是整个文件。
在示例中,prop 可以是“Test”或“SuperTest”。 它抛出一个错误Unexpected token (7:26) 有没有办法做到这一点?然后将其渲染到 App 中?
App.js
import { useState } from 'react';
// import Test from './Test';
function App({prop}) {
const [Comp, setComp] = useState(null);
import('./Test').then(({`${prop}`: newComp}) => { // This is an ERROR
console.log(typeof newComp); // Object
setIcon(() => newComp);
});
return (
<div className="App">
<Comp />
</div>
);
}
export default App;
Test.js
export const Test = () => {
return (
<div>
Hello People
</div>
);
}
export const SuperTest = () => {
return (
<div>
Hello People 2
</div>
);
}
【问题讨论】:
-
我们的好奇心;为什么要在一个文件中添加许多组件?将组件拆分为自己的文件不是更传统和方便吗?无论哪种方式,当您从
react导入useState时,您已经在使用named imports。为什么不以同样的方式导入组件 - 反正你已经单独导出它们了! -
使用
import { Test } from './Test';有什么问题?导入通常不会影响性能(除非您指的是输出的包大小,但还有其他解决方案),因为它们是在编译代码时使用的,而不是运行它。见Code Splitting。 -
@DrewReese 将来,我会在里面有很多函数,并且不想每次用户只需要其中一个时都将它们都放在 webpack 包中。您引用的其他解决方案是什么?
-
由于不清楚您关心优化什么样的性能,我将您的问题解释为关于运行性能(速度、内存使用量等)。我引用的替代方案是关于包大小优化,特别是摇树:webpack.js.org/guides/tree-shaking
标签: javascript reactjs react-hooks