React 组件声明中“导出"的目的是什么?

本文介绍了React 组件声明中“导出"的目的是什么?的处理方法,对大家解决问题具有一定的参考价值

问题描述

在 React (ES6) 中,为什么我有时会看到这个?...

class Hello 扩展 React.Component { ... }

有时这个?

export class Hello extends React.Component { ... }

export 关键字的意义是什么?如果使用 webpack,是否需要对 webpack.config.js 文件进行任何更改?

任何有关这方面的信息将不胜感激,在此先感谢.

<小时>

更新:

ma​​in-file.js

'react'导入反应;从 'react-dom' 导入 ReactDOM;从'./external'导入{外部};类 Hello 扩展 React.Component {使成为() {返回 
<h1>Hello World(这次是主文件)</h1><外部/></div>}}ReactDOM.render(<Hello/>, document.getElementById('main'));

external.js(同一目录)

export class External extends React.Component {使成为() {return <div>这是我的外部组件</div>}}

这不起作用 - 你知道为什么吗??

解决方案

在解释 export 关键字之前,让我给你澄清一些事情.

<小时>

正如您在互联网上看到的那样,在每个 React 应用程序中,您需要使用两个重要的东西:

1/通天塔

2/webpackbrowserify

说明

什么是 Babel 工作?

您可能听说过 jsxES6.

嗯,Babel 的工作是将 jsx 转换为 js 并将 ES6 转换为 ES5,以便浏览器可以理解这两件事.

export 关键字是 ES6 中的一项新功能,让您可以导出您的 functionsvariables 以便您可以在其他 中访问它们>js 文件.

即:

hello.js

export default class Hello extends React.Component {使成为() {return <div>你好</div>}}

world.js

import { Hello } from './hello';类 World 扩展 React.Component {使成为() {返回<div><你好/>世界</div>;//jsx sytanx.}}

什么是 webpack 作业?

Webpack 是一个模块打包器.它接收一堆资产(即hello.jsworld.js 和你的模块(react、react-dom....))并将其转化为一个文件.

即:

假设我们有以下 webpack

的配置

//不需要将 hello.js 设置为条目,因为我们已经将其导入 world.js模块.exports = {入口: ['./src/world.js'],输出: {路径:__dirname,公共路径:'/',文件名:'bundle.js'}};

webpack 它将你所有的 js 文件和你的模块导入到一个单一的文件中 bundle.js.

解决问题

jsx中,

始终将返回的 html 包装到 () 中.

<代码>...使成为() {返回 (

<h1>Hello World(这次是主文件)</h1><外部/></div>)}...

In React (ES6), why do I sometimes see this?...

class Hello extends React.Component { ... }

and sometimes this?

export class Hello extends React.Component { ... }

What is the significance of the export keyword? If using webpack, would this require any changes to the webpack.config.js file?

Any info on this would be appreciated, thanks in advance.


UPDATE:

main-file.js

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

import { External } from './external';

class Hello extends React.Component {
  render() {
    return <div>

      <h1>Hello World (Main File this time)</h1>
      <External />

    </div>
  }
}

ReactDOM.render(<Hello/>, document.getElementById('main'));

external.js (same directory)

export class External extends React.Component {
  render() {
    return <div>This is my external component</div>
  }
}

This doesn't work - can you see why??

解决方案

Before explain the export keyword let me clear something to you.


As you have seen around the internet, in every react application you need to use two important things:

1/ Babel

2/ webpack or browserify

Explaination

What is Babel job?

You might heard of jsx and ES6.

Well, Babel job is Transpile the jsx to js and ES6 to ES5 so the browser can understand these two things.

And export keyword is a new feature in ES6 let export your functions, variables so you can get access to them in other js files.

ie:

hello.js

export default class Hello extends React.Component {
  render() {
    return <div>Hello</div>
  }
}

world.js

import { Hello } from './hello';

class World extends React.Component {
  render() {
    return <div><Hello /> world</div>; // jsx sytanx.
  }
}

What is webpack job?

Webpack is a module bundler. It takes in a bunch of assets (ie. hello.js, world.js and your modules (react, react-dom....)) and turns that into one single file.

i.e:

let say that we have the following config for webpack

// dont need to set hello.js as an entry because we already import it into world.js
module.exports = {

  entry: [
    './src/world.js'  
  ],
  output: {
    path: __dirname,
    publicPath: '/',
    filename: 'bundle.js'
  }
};

webpack it turn all of your js files and your modules wich imported and it turn it into onne single file bundle.js.

Edit: Solving the problem

In jsx,

always wrap the returned html into ().

...
render() {
  return (
    <div>
      <h1>Hello World (Main File this time)</h1>
      <External />
    </div>
  )
}
...

这篇关于React 组件声明中“导出"的目的是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,WP2

admin_action_{$_REQUEST[‘action’]}

do_action( "admin_action_{$_REQUEST[‘action’]}" )动作钩子::在发送“Action”请求变量时激发。Action Hook: Fires when an ‘action’ request variable is sent.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$_REQUEST['action']引用从GET或POST请求派生的操作。源码(Source)更新版本源码位置使用被使用2.6.0 wp-admin/admin.php:...

日期:2020-09-02 17:44:16 浏览:1169

admin_footer-{$GLOBALS[‘hook_suffix’]}

do_action( "admin_footer-{$GLOBALS[‘hook_suffix’]}", string $hook_suffix )操作挂钩:在默认页脚脚本之后打印脚本或数据。Action Hook: Print scripts or data after the default footer scripts.目录锚点:#说明#参数#源码说明(Description)钩子名的动态部分,$GLOBALS['hook_suffix']引用当前页的全局钩子后缀。参数(Parameters)参数类...

日期:2020-09-02 17:44:20 浏览:1069

customize_save_{$this->id_data[‘base’]}

do_action( "customize_save_{$this-&gt;id_data[‘base’]}", WP_Customize_Setting $this )动作钩子::在调用WP_Customize_Setting::save()方法时激发。Action Hook: Fires when the WP_Customize_Setting::save() method is called.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_data...

日期:2020-08-15 15:47:24 浏览:806

customize_value_{$this->id_data[‘base’]}

apply_filters( "customize_value_{$this-&gt;id_data[‘base’]}", mixed $default )过滤器::过滤未作为主题模式或选项处理的自定义设置值。Filter Hook: Filter a Customize setting value not handled as a theme_mod or option.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_date['base'],指的是设置...

日期:2020-08-15 15:47:24 浏览:898

get_comment_author_url

过滤钩子:过滤评论作者的URL。Filter Hook: Filters the comment author’s URL.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/comment-template.php:32610...

日期:2020-08-10 23:06:14 浏览:930

network_admin_edit_{$_GET[‘action’]}

do_action( "network_admin_edit_{$_GET[‘action’]}" )操作挂钩:启动请求的处理程序操作。Action Hook: Fires the requested handler action.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$u GET['action']引用请求的操作的名称。源码(Source)更新版本源码位置使用被使用3.1.0 wp-admin/network/edit.php:3600...

日期:2020-08-02 09:56:09 浏览:876

network_sites_updated_message_{$_GET[‘updated’]}

apply_filters( "network_sites_updated_message_{$_GET[‘updated’]}", string $msg )筛选器挂钩:在网络管理中筛选特定的非默认站点更新消息。Filter Hook: Filters a specific, non-default site-updated message in the Network admin.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分$_GET['updated']引用了非默认的...

日期:2020-08-02 09:56:03 浏览:863

pre_wp_is_site_initialized

过滤器::过滤在访问数据库之前是否初始化站点的检查。Filter Hook: Filters the check for whether a site is initialized before the database is accessed.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/ms-site.php:93910...

日期:2020-07-29 10:15:38 浏览:833

WordPress 的SEO 教学:如何在网站中加入关键字(Meta Keywords)与Meta 描述(Meta Description)?

你想在WordPress 中添加关键字和meta 描述吗?关键字和meta 描述使你能够提高网站的SEO。在本文中,我们将向你展示如何在WordPress 中正确添加关键字和meta 描述。为什么要在WordPress 中添加关键字和Meta 描述?关键字和说明让搜寻引擎更了解您的帖子和页面的内容。关键词是人们寻找您发布的内容时,可能会搜索的重要词语或片语。而Meta Description则是对你的页面和文章的简要描述。如果你想要了解更多关于中继标签的资讯,可以参考Google的说明。Meta 关键字和描...

日期:2020-10-03 21:18:25 浏览:1720

谷歌的SEO是什么

SEO (Search Engine Optimization)中文是搜寻引擎最佳化,意思近于「关键字自然排序」、「网站排名优化」。简言之,SEO是以搜索引擎(如Google、Bing)为曝光媒体的行销手法。例如搜寻「wordpress教学」,会看到本站的「WordPress教学:12个课程…」排行Google第一:关键字:wordpress教学、wordpress课程…若搜寻「网站架设」,则会看到另一个网页排名第1:关键字:网站架设、架站…以上两个网页,每月从搜寻引擎导入自然流量,达2万4千:每月「有机搜...

日期:2020-10-30 17:23:57 浏览:1308