当前位置: 首页 > 知识库问答 >
问题:

如何使用React ES6 webpack导入和导出组件?

陆俊捷
2023-03-14

我正在用< code>babel和< code>webpack玩< code>React和< code>ES6。我想在不同的文件中构建几个组件,导入到一个文件中,然后用< code>webpack将它们捆绑起来

假设我有几个这样的组件:

我的昵称.jsx

import React from 'react';
import Navbar from 'react-bootstrap/lib/Navbar';

export class MyNavbar extends React.Component {
    render(){
      return (
        <Navbar className="navbar-dark" fluid>
        ...
        </Navbar>
      );
    }
}

主页.jsx

import React from 'react';
import ReactDOM from 'react-dom';

import MyNavbar from './comp/my-navbar.jsx';

export class MyPage extends React.Component{
  render(){
    return(
        <MyNavbar />
        ...
    );
  }
}

ReactDOM.render(
  <MyPage />,
  document.getElementById('container')
);

使用webpack并遵循他们的教程,我有了< code>main.js:

import MyPage from './main-page.jsx';

在构建并运行项目后,我在浏览器控制台中收到以下错误:

Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. Check the render method of `MyPage`.

我做错了什么?如何正确导入和导出我的组件?

共有3个答案

郏博瀚
2023-03-14

要在ES6中导出单个组件,您可以使用< code>export default,如下所示:

class MyClass extends Component {
 ...
}

export default MyClass;

现在您可以使用以下语法导入该模块:

import MyClass from './MyClass.react'

如果您希望从单个文件中导出多个组件,则声明如下所示:

export class MyClass1 extends Component {
 ...
}

export class MyClass2 extends Component {
 ...
}

现在您可以使用以下语法来导入这些文件:

import {MyClass1, MyClass2} from './MyClass.react'
宗冠宇
2023-03-14

如果没有默认导出,则用大括号包装组件

import {MyNavbar} from './comp/my-navbar.jsx';

或从单个模块文件导入多个组件

import {MyNavbar1, MyNavbar2} from './module';
乐城
2023-03-14

尝试默认组件中的导出:

import React from 'react';
import Navbar from 'react-bootstrap/lib/Navbar';

export default class MyNavbar extends React.Component {
    render(){
      return (
        <Navbar className="navbar-dark" fluid>
        ...
        </Navbar>
      );
    }
}

通过使用默认值,您可以表示它将成为该模块中的成员,如果没有提供特定的成员名称,则该模块将被导入。您也可以表示要导入名为MyNavbar的特定成员,方法是:从“”导入{MyNavbar}/comp/my导航条.jsx';在这种情况下,不需要默认值

 类似资料:
  • 问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块

  • 如何通过查询导入和导出.sql文件。在jdbc中使用的注意事项

  • 导出(export)和导入(import)指令有几种语法变体。 在上一节,我们看到了一个简单的用法,现在让我们来探索更多示例吧。 在声明前导出 我们可以通过在声明之前放置 export 来标记任意声明为导出,无论声明的是变量,函数还是类都可以。 例如,这里的所有导出均有效: // 导出数组 export let months = ['Jan', 'Feb', 'Mar','Apr', 'Aug',

  • 导出和导入容器 导出容器 如果要导出本地某个容器,可以使用 docker export 命令。 $ docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NA

  • 问题内容: 我在VirtualMachine之类的软件包中找到了一些用于调试的类,但是我不能使用它,因为Sun JDK7中似乎不存在该软件包。 如何使用此套件? 顺便说一句。我想要的不一样 问题答案: 根据此页面,链接到的类是仅在JDK(而非JRE)中分发的文件的一部分。它说 … “ 更新说明2: Attach API位于tools.jar中,因此您需要在CLASSPATH中添加/lib/tool

  • 通过将 Dreamweaver 站点设置作为 XML 文件导出和导入,在不同设备和产品版本上重用这些设置。 当您定义一个站点时,Dreamweaver 会将该站点的信息存储在它的文件中。 如果您想要使用另一台计算机在站点上工作,可以将您的站点信息(站点设置)导出到一个 XML 文件,然后将其导入到另一个 Dreamweaver 系统。如果您想要使用另一台计算机在站点上工作,可以将您的站点信息(站点

  • 可以将本地文档导入到幕布中,也可以将幕布中的文档导出到本地,支持Word、PDF、HTML、OPML、FreeMind等多种格式。 导入 在文档列表主页面点击「新建」,可以选择导入OPML文件(.opml格式)或者FreeMind文件(.mm格式)。 导出 在文档编辑页面点击右上角「更多」选项: 导出/下载:将该文档导出到本地,支持Word、PDF、HTML、OPML格式; 打印:使用打印机打印该

  • 如何将所有数据批量存储到后端? 模式之间的引用很少,因此是否会创建新的'_id'从而影响我的引用 如果您认为这不是导出数据的正确方法,那么如何使用node Express来完成?