JSX 中的“导出默认值”有啥作用?

Posted

技术标签:

【中文标题】JSX 中的“导出默认值”有啥作用?【英文标题】:What does "export default" do in JSX?JSX 中的“导出默认值”有什么作用? 【发布时间】:2016-07-25 09:41:05 【问题描述】:

我想问最后一句是什么意思和作用(导出默认的HelloWorld;)但是我找不到任何关于它的教程。

// hello-world.jsx

import React from 'react';

class HelloWorld extends React.Component 
  render() 
    return <p>Hello, world!</p>;
  


export default HelloWorld;

【问题讨论】:

这能回答你的问题吗? What is "export default" in javascript? 【参考方案1】:

Export 像export default HelloWorld; 和import,比如import React from 'react' 是ES6 modules system 的一部分。

模块是一个自包含的单元,可以使用export 将资产暴露给其他模块,并使用import 从其他模块获取资产。

在您的代码中:

import React from 'react'; // get the React object from the react module

class HelloWorld extends React.Component 
  render() 
    return <p>Hello, world!</p>;
  


export default HelloWorld; // expose the HelloWorld component to other modules

在 ES6 中有两种导出方式:

命名导出 - 例如,export function func() 是名称为 func 的命名导出。可以使用import exportName from 'module';. 导入命名模块,在这种情况下,导入的名称应该与导出的名称相同。要在示例中导入 func,您必须使用 import func from 'module';。一个模块中可以有多个命名导出。

默认导出 - 如果您使用简单的导入语句 import X from 'module',将从模块导入的值。 X 是本地分配给包含该值的变量的名称,它不必像原始导出那样命名。只能有一个默认导出。

模块可以包含命名导出和默认导出,并且可以使用import defaultExport, namedExport1, namedExport3, etc... from 'module'; 一起导入。

【讨论】:

【参考方案2】:

export default 用于从脚本文件中导出单个类、函数或原语。

导出也可以写成

export default class HelloWorld extends React.Component 
  render() 
    return <p>Hello, world!</p>;
  

你也可以把它写成一个函数组件,比如

export default function HelloWorld() 
  return <p>Hello, world!</p>

这用于在另一个脚本文件中导入这个函数

import HelloWorld from './HelloWorld';

您不必将其导入为HelloWorld,您可以给它任何名称,因为它是默认导出

关于出口的一点点

顾名思义,用于从脚本文件或模块中导出函数、对象、类或表达式

Utiliites.js

export function cube(x) 
  return x * x * x;

export const foo = Math.PI + Math.SQRT2;

这个可以导入使用

App.js

import  cube, foo  from 'Utilities';
console.log(cube(3)); // 27
console.log(foo);    // 4.555806215962888

或者

import * as utilities from 'Utilities';
console.log(utilities.cube(3)); // 27
console.log(utilities.foo);    // 4.555806215962888

使用导出默认值时,这要简单得多。脚本文件只导出一件事。 cube.js

export default function cube(x) 
  return x * x * x;
;

并用作 App.js

import Cube from 'cube';
console.log(Cube(3)); // 27

【讨论】:

【参考方案3】:

default export 的最简单理解是

Export 是 ES6 的特性,用于导出模块(文件)并在其他模块(文件)中使用。

默认导出:

    如果您只想从文件(模块)中导出一个对象(变量、函数、类),则 default export 是惯例。 每个文件只能有一个默认导出,但不限于只有一个导出(命名导出)。 导入默认导出对象时,我们也可以重命名它。

导出或命名导出:

    用于导出同名对象(变量、函数、类)。

    用于从一个文件中导出多个对象。

    在其他文件中导入时不能重命名,必须与导出时使用相同的名称,但我们可以使用as运算符创建它的别名。

在 React、Vue 和许多其他框架中,Export 主要用于导出可重用组件以制作基于模块化的应用程序。

【讨论】:

【参考方案4】:

简单来说-

export 语句用于创建 JavaScript 模块时 从模块中导出函数、对象或原始值,以便 其他程序可以通过 import 语句使用它们。

这里有一个链接可以清楚地理解:MDN Web Docs

【讨论】:

【参考方案5】:

简单来说,导出意味着让我们编写的脚本被另一个脚本使用。如果我们说导出,我们的意思是任何模块都可以通过导入来使用这个脚本。

【讨论】:

【参考方案6】: 在了解 Export Default 之前,让我们先了解一下 Export 和 Import 是什么: 通俗地说:exports 是可以发送给其他人的商品和服务,类似地,在函数组件中 export 意味着您正在让您的函数或组件被另一个脚本使用。 导出默认值意味着您只想导出脚本中默认存在的一个值,以便其他脚本可以导入该值以供使用。 这对于代码的可重用性非常必要。

让我们看看如何使用它的代码

  import react from 'react'

function Header()

    return <p><b><h1>This is the Heading section</h1></b></p>;

**export default Header;**
因为这个导出,它可以像这样导入-

从'./Header'导入标题;

如果有人对导出部分发表评论,您将收到以下错误:

你会得到这样的错误:-

【讨论】:

Please do not use images as replacement for code blocks or error messages. 你的答案很容易写出来,不用任何图像。代码可以放在代码块中,错误信息可以放在块引用中。

以上是关于JSX 中的“导出默认值”有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

React:导出 const + 导出默认值 vs 导出默认值

javascript 使用导出默认值创建导出回退

使用 babel 和 webpack 转换代码时,导出默认值不会被转换

导出默认值未在WebStorm中使用

从子目录导出默认值

在 ES 6 模块中重新导出默认值