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

在ReactJS中导出(默认)类

司马高韵
2023-03-14
问题内容

如果要创建组件,似乎可以用很多不同的方式创建类。这些有什么区别?我怎么知道要使用哪个?

import React, {Component} from 'react'

export default class Header extends Component {

}

export const Header = React.createClass({

})

export default React.createClass({

})

我只是假设他们做不同的事情,还是只是语法不同?

如果有人可以给我快速的解释或链接,我将不胜感激。我不想从一个新的框架开始,不知道到底有什么区别。


问题答案:

嗨,欢迎来到React!

我认为您在这里遇到的问题并不是与React特定的,而是与新的ES2015模块语法有关。在创建React类组件时,出于大多数意图和目的,您可以认为在React.createClass功能上等同于class MyComponent extends React.Component。一种只是使用新的ES2015类语法,而另一种则使用ES2015之前的语法。

为了学习模块,我建议阅读一些有关新模块语法的文章以使其熟悉。这是一个很好的开始:http : //www.2ality.com/2014/09/es6-modules-
final.html

简而言之,这些只是语法上的差异,但我将尝试快速浏览一下:

/**
 * This is how you import stuff.  In this case you're actually 
 * importing two things:  React itself and just the "Component" 
 * part from React.  Importing the "Component" part by itself makes it
 * so that you can do something like:
 *
 * class MyComponent extends Component ...
 * 
 * instead of...
 * 
 * class MyComponent extends React.Component
 * 
 * Also note the comma below
 */
import React, {Component} from 'react';


/**
 * This is a "default" export.  That means when you import 
 * this module you can do so without needing a specific module
 * name or brackets, e.g.
 * 
 * import Header from './header';
 *
 * instead of...
 *
 * import { Header } from './header';
 */
export default class Header extends Component {

}

/**
 * This is a named export.  That means you must explicitly
 * import "Header" when importing this module, e.g.
 *
 * import { Header } from './header';
 *
 * instead of...
 * 
 * import Header from './header';
 */
export const Header = React.createClass({

})

/**
 * This is another "default" export, only just with a 
 * little more shorthand syntax.  It'd be functionally 
 * equivalent to doing:
 *
 * const MyClass = React.createClass({ ... });
 * export default MyClass;
 */
export default React.createClass({

})


 类似资料:
  • 我想问最后一句是什么意思和做(导出默认的HelloWorld;),但我找不到关于它的任何教程。

  • 您好,我在react js中有此组件: 我需要导出返回函数中的这一行:作为变量在另一个组件中使用它。 所以我这样做了: 但是我得到了这个错误:意外的令牌,预期的,(47:20) 有人能帮我导出变量吗

  • 我有一个VUE2项目,我编写了一个简单的函数来翻译日期中的月份,我想将它导入到我的一个组件中,但是我得到了一个错误: 在“@/utils/date-translation”中找不到导出“default”(导入为“translate date”) src文件夹中的相对文件路径是正确的,我导出的函数如下所示: 然后我将其导入到组件中,如下所示: 我做错了什么?

  • 模块“Transformer”解析为非模块实体,不能使用此构造导入。 如何导入类?其实我只是想利用那堂课。我不希望指令在我的代码中产生附带效应。我只想用它:'(

  • 问题内容: 档案:SafeString.js 我从未见过。是否有任何等效的东西更容易理解? 问题答案: 它是ES6模块系统的一部分,该文档中还有一个有用的示例: 如果模块定义了默认导出: 那么您可以通过省略花括号来导入默认导出: 更新: 自2015年6月,该模块系统中定义§15.2和在特定语法中定义§15.2.3ECMAScript的2015规范的。