【问题标题】:Multiple Exports From React Component Library来自 React 组件库的多个导出
【发布时间】:2019-09-17 16:15:51
【问题描述】:

我正在尝试创建一个包含多个独立组件的组件库。最终目标是允许用户做类似的事情

import One from 'component-library' 
import Two from 'component-library'
<One/>
<Two/>

但是我什么也做不了。

我目前的布局是

src
 -index.tsx
 -components
  -one
  -two

我的代码示例:

一个.tsx

export default class One {
 ...
}

然后在我的根 index.tsx 中

import {default as One} from './components/one/One.tsx'
import {default as Two} from './components/two/Two.tsx'

export {
  one,
  two
}

然而,这不起作用并在尝试导入时返回 undefined ,如上所示。然而,我只能使用一个组件和export {default} from './components/one/One.tsx' 或只是做import One from '.components/one/One.Tsx' 才能让它工作,所以我认为我的构建过程应该没问题。在这种情况下,组件在我的其他项目中正确显示。

我还尝试修改我的结构和导入方式,例如在每个组件中使用 index.tsx 文件并从那里导出/导入。所有这些都得到了相同的结果,返回未定义。

我怎样才能正确地导出这些,以便在第 3 方项目中单独导入每一个?

【问题讨论】:

  • 我已经尝试过这里提出的解决方案,它的结果与上面提到的相同。
  • 你所拥有的只是模糊地看起来像重复问题的答案。此外,JavaScript 变量区分大小写 -- one != One

标签: javascript reactjs typescript webpack


【解决方案1】:

像汉兰达一样,给定模块只能有一个默认导出。您可以通过导入不同的模块来获得所需的导入:

import One from 'component-library/One';
import Two from 'component-library/Two';

或者,您可以使用命名的导出和导入:

import { One, Two } from 'component-library';

但是你不能让同一个导入根据导入名称返回两个不同的东西。

【讨论】:

    【解决方案2】:

    试试下面的代码:

    import one from './components/one/One.tsx';
    import two from './components/two/Two.tsx';
    
    export const One = one;
    export const Two = two;
    
    

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

    
    import {One, Two} from 'component-library';
    
    <One/>
    <Two/>
    
    

    【讨论】:

    • 代码行不通。导出有语法错误。
    • 试试这个:export const One;而不是导出一个;两个需要进行类似的更改。
    • 这行不通。请在发布前自己尝试一下,这样才能保证它对其他用户有效并获得正面投票。
    • 嗨,请查看链接repl.it/@bankim2402/… 以获取工作示例。如果这对你不起作用,请告诉我。
    猜你喜欢
    • 2021-04-28
    • 2014-06-27
    • 1970-01-01
    • 2020-10-20
    • 2019-02-14
    • 2018-01-24
    • 2017-08-15
    • 2021-08-01
    • 2022-06-28
    相关资源
    最近更新 更多