【问题标题】:import React components with namespace使用命名空间导入 React 组件
【发布时间】:2018-11-16 00:03:10
【问题描述】:

我的 react 组件的结构是这样的。

/build
    ..............................
/lib
    /inner
        /InnerComponent.js
        /index.js
    /OuterComponent1.js
    /OuterComponent2.js
    /index.js
.................................
package.json
.................................

我的package.json 如下所示

 {
      "name": "my-comp",
      .......................
      "main": "build/index.js",
      "scripts": {
        "build": "babel lib -d build",
        "build:watch": "babel lib -w -d build",
        "lint": "eslint lib/**; exit 0",
        "lint:watch": "esw -w lib/**",
        "prepublish": "npm run build"
      },
      "devDependencies": {
          .......................
      },
      "dependencies": {
          .......................
      },
      "directories": {
        "lib": "lib"
      },
      "repository": {
          .......................
      }
    }

OuterComponent1OuterComponent2 可以从 lib/index.js 导入为 import {OuterComponent1,OuterComponent2} from "my-comp"。我需要将lib/inner 中的所有内容导入为import {InnerComponent} from "my-comp/inner"(我想为lib/inner 文件夹中的组件添加命名空间)。在 npm 中发布后如何执行此操作?

【问题讨论】:

    标签: javascript node.js reactjs npm ecmascript-6


    【解决方案1】:

    您可以像这样从inner/index.js 创建命名导出:

    export { InnerComponent } from './InnerComponent';
    

    这将允许使用以下方式导入:

    import { InnerComponent } from 'my-comp/inner';
    

    【讨论】:

    • 嗨 Steve my-comp 应该在 npm 中发布并安装到其他一些项目中。在给出上述导入语句时,它给了我这个错误Module not found: Can't resolve 'my-comp/inner' in 'H:\workspace\vscode\sample-project\src\components\home\sub'
    • node_modules 中的模块文件夹是否为my-comp?看起来它正在尝试使用 import import 语句查找与包含文件的文件夹相关的模块
    • 是的,一旦安装 my-comp 将进入我项目的节点模块中
    • 好的。一旦安装为 npm 模块,我认为导入将起作用。如果您手动将其添加到您的测试项目中,您可以将文件夹放入 node_modules,或者使用 Webpack 解析别名来正确找到该文件夹​​
    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 2021-09-15
    • 1970-01-01
    • 2010-09-05
    • 2017-01-25
    • 2012-06-01
    • 1970-01-01
    • 2011-07-01
    相关资源
    最近更新 更多