有条件地从其他地方导入组件(如果不存在)

bit*_*ger 5 reactjs

我想知道,是否可以从“customer”文件夹导入组件,如果那里不存在\xc2\xb4t,则从“core”文件夹导入它。像这样的东西:

\n
import React, {lazy} from 'react'\nconst MyComponent = lazy('customerFolder/myComponent').then(\n    if (!MyComponent) lazy('coreFolder/myComponent')\n)\n
Run Code Online (Sandbox Code Playgroud)\n

我知道,这段代码不能\xc2\xb4t 工作,但我希望你明白这一点。:)\n我怎样才能做到这一点?也许这是一个 webpack 配置?

\n

我正在使用 React 16.13 和 webpack 4.43。

\n

提前致谢。

\n

Bay*_*han 0

也许回答有点晚了,但你应该捕获异常。

const importComponent= path =>
lazy(() => import(`${path}`).then(comp => comp).catch(err => <p>
 Component not found </p>))

Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

const Comp = importComponent("./Button");
<Comp onClick={() => alert("Hello World")}>Hello world</Comp>
Run Code Online (Sandbox Code Playgroud)

如果未找到组件,它将返回“未找到组件”文本:D