当前位置: 首页 > 面试题库 >

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

劳宇
2023-03-14
问题内容

我在玩ReactES6使用babelwebpack。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起webpack

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

my-navbar.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>
      );
    }
}

main-page.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并按照其教程进行操作,我有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`.

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


问题答案:

尝试 默认设置 组件中的导出:

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的特定成员:从’./comp/my-
navbar.jsx’导入{MyNavbar};在这种情况下,不需要默认值



 类似资料:
  • 用例很简单:我只想导出一个名称与导入时相同的对象。 例如: 但这并不起作用。我必须写: 但这很奇怪。正确的方法是什么? 更新: 感谢帮助和参考。我用许多线索解决了我的问题。下面给大家分享一些我常见的案例和解决方法。

  • 问题内容: 在我正在合作的项目中,关于可以使用哪种模块系统,我们有两个选择: 导入使用的模块,并使用导出和。 使用ES6导入模块,并使用ES6导出 相互使用是否对性能有好处?如果要在Node模块上使用ES6模块,还有其他什么应该知道的吗? 问题答案: 相互使用是否对性能有好处? 请记住,还没有JavaScript引擎本身支持ES6模块。您说自己正在使用Babel。无论如何,Babel都会默认将其转

  • 问题内容: 尝试做一些我想会很简单的事情。我想导入一个现有的JavaScript库,然后调用它的函数。因此,例如,我想导入blah.js,然后调用blah()。 只是想知道要完成这项工作我需要做什么神奇的组合。也许我只是错过了重点。该示例给出错误“ TypeError:_blah.blah未定义”。 问题答案: 命名出口: 假设您创建了一个名为的文件,其中包含您希望其他模块(例如React组件)可

  • 问题内容: 有人可以为我提供关于类对象的一些指导,以及如何在我的项目中的另一个对象中引用它吗? 这是我的对象-request-api.js(注意:我知道它还没有进行很多操作,但是我想走路之前要走路) 这是我试图在其中引用的React Class组件: 我的React Component Class对象出现错误: 谁能为我提供一些见识/帮助? 问题答案: 由于不是静态方法,因此您需要先创建的实例,然

  • 问题内容: 希望能弄清为什么以下内容无法按预期工作,希望这是我可能忽略的简单事情。如果没有Webpack,当前的实现将按预期工作。 理想情况下,想保持当前的实现,我觉得组件/控制器/等的注册应在其自己的文件中完成,并且仅指向相关模块。但是,如果这不是最佳做法,那么我也想看看另一个建议。 文件root.module是我定义根模块的位置,然后在root.component文件中,将组件附加到该模块上。

  • 问题内容: 我有几个具有以下CSS /组件结构的组件 我将CSS导入组件中,如下所示 但是,CSS被导入到本节中,并保持全局范围。 我期望CSS是: 组件作用域,即样式仅应用于 仅 在此组件内呈现的内容。 如果卸载该组件,该组件的样式将消失。 但是,从浏览器进行检查时,样式在该部分指定,并应用于所有组件 如何导入CSS进行组件作用域?似乎我不正确地理解React ES6中的CSS导入。 我正在关注