【问题标题】:Export and import classes in React without ES6在没有 ES6 的 React 中导出和导入类
【发布时间】:2020-02-25 06:23:56
【问题描述】:

我正在开发一个 React 项目,但不想使用 ES6,因为我不太了解它是如何工作的。我想导出我的类 ShoppingList,如下所示:

class ShoppingList extends React.Component {
    render() {
        return (
            <div className="shopping-list">
                <h1>Shopping List for {this.props.name}</h1>
                <ul>
                    <li>Instagram</li>
                    <li>WhatsApp</li>
                    <li>Oculus</li>
                </ul>
            </div>
        );
    }
}

我想将它导入到我的 index.js 中:

const rootElement = document.getElementById('root')
const ShoppingList = require('./Components/ShoppingList')

function App() {
    return (
        <div>
            <ShoppingList name="Abhinav" />
        </div>
    )
}

ReactDOM.render(<App />, rootElement)

但是require() 函数不起作用。如果有人能告诉我如何轻松导入 ta 函数或如何将 ES6 添加到此。目录图片如下:

【问题讨论】:

  • 你为什么要这么做?
  • 那么,如果你不想使用 ES6,为什么还要使用类呢? :)
  • 哦,所以只有es6主要支持classes?
  • 我建议你快速浏览一下 ES6 标准。当您使用基于类的组件时。
  • 好的,所以可以告诉我我可以添加什么来转移到 es6,我以前用 npm 做过,但现在没有。我可以添加任何文件来获取 es6 吗?

标签: javascript reactjs ecmascript-6


【解决方案1】:

不想使用 ES6,因为我真的不明白它是如何工作的。

为此,您必须查看为该语言定义的标准。 You can start here。今天的大多数浏览器都支持 ES6+ 特性,例如类、粗箭头语法、let、const 等。

要获得全面支持,您必须设置任何用于将最新标准代码转换为工作支持代码的转译器。这意味着它将代码转换为不理解最新语法的浏览器支持的代码。

为此,您可以使用多种工具,例如:

  • 网页包
  • 通天塔
  • 打字稿

等等。 Typescript 是一种语言,它是 javascript 的超集。它具有 javascript 尚未发布或支持的所有最新功能。

如果有人能告诉我如何轻松导入函数或如何将 ES6 添加到此。

看,如果你想导入任何函数或类,那么它必须首先被导出。因此,如果我们采用您的代码示例,那么您必须像这样导出它:

export class ShoppingList extends React.Component {
     // class code
}

class ShoppingList extends React.Component {}
export { ShoppingList }; // normal export
export default ShoppingList; // default export don't need {}

在上面的代码中你可以看到两种导出方式,第一种是内联导出,你也可以像export default class ShoppingList ...一样默认导出。

在第二个示例中,您可以看到两种类型的导出:

  • 正常导出会在{}内导出,也会在{}内导入。
  • 默认导出将不带括号导出,也将不带括号导入。

现在你可以像这样导入它:

import { ShoppingList } from './path/of/file'; // normal import
import ShoppingList from './path/of/file'; // default exported import    
import SList from './path/of/file'; // name it anything but works only for default exports

【讨论】:

  • 我已经在使用 babel,但那是 JSX 的。如何让它运行 ES6?
  • @Abhinav 我宁愿建议你使用一个工具create-react-app,它可以为你生成一个项目,然后你就可以开始开发了。浏览文档你可以找到很多东西。
  • 我之前使用过 create-react-app 并且它对我有用,但目前我在一所计算机上没有安装 npm 和 node.js 的学校。我找到了一种创建反应应用程序的方法,但只有这件事让我感到困扰。但如果我没有找到任何有效的答案,我可以通过我的 html 页面导入,它工作正常。
  • 你可以使用在线编辑器,比如 stackblitz。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2017-06-29
  • 2018-01-15
相关资源
最近更新 更多