简单易懂的React魔法(04):用es6语法引入react组件

我们的代码还没有任何输出,因为还没有让index.js包含我们的Detail.js。修改index.js包含以下代码:

src/index.js

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

import Detail from './pages/Detail';

ReactDOM.render(
    <Detail />,
    document.getElementById('app')
);

保存index.js和detail.js,回到浏览器,会看到页面上的“This is React rendering HTML !“。
在我介绍这些代码是做什么的之前,你可以试着回到detail.js修改它的render方法,使它输出 “This is JSX being converted to HTML!” 如果你这么做了,保存之后,你会发现浏览器自动更新了文字。

不需要手动重新运行webpack来更新修改,webpack dev server 会自动检查这些修改后重新渲染页面,这被称为热加载(hot loading)。希望你现在明白了最开始的时候为什么要花费时间在配置webpack上。如果你发现浏览器没刷新,那你自己手动刷新一下看看。
现在我们解释一下index.js里每行代码的用处:

  • import React from ‘react’引入react,之前你应该看到过。
  • import ReactDOM from ‘react-dom’;这行是新的,这是react操纵dom的工具。
  • import Detail from ‘./pages/Detail’把detail.js里的组件包含到app中。
  • ReactDOM.render()是开始渲染我们整个app的方法,需要连个参数,JSX元素和渲染它的地方。
  • <Detail />是我们需要渲染的元素,作为render的第一个参数,这也是我们Detail组件的名字。
  • document.getElementById(‘app’) 是render的第二个参数。作为react组件的根节点。在这个例子里,我们render在id为app的div中,这个div可以在index.html里找到。

当我们的应用被渲染,<Detail />会被自动转换为我们在Detail.js里创建的组件。调用的是detail的render方法。

现在,在我们继续之前你可能有些问题。我来回答一些:

为什么Detail.js是大写的?

这不是必须的,但是我们习惯这样写,因为react定义组件必须大写首字母。如果在detail.js里声明Detail组件可能会混淆。

JSX怎么知道<Detail />的意思?

我们在Detail.js里不声明组件的名称,而是在它被引入的时候起名字。如果你这样引入import Bob from './pages/Detail'那之后就可以用<Bob />表示这个组件,但是最好别这么用,那样会很混乱。

我能放很多组件在Detail.js里么?

你要想这么做也可以,不过这样也很混乱,最好还是一个文件里面声明一个组件。

我必须渲染组件里的东西么?

不是必须的,不过react确实需要你渲染一些东西。等你react用的多了你就会了解。

总的来说,到目前为止,你已经学会了:

  1. 如何安装webpack,babel和react来用es6语法开发应用。
  2. 如何创建基本react组件并放入应用。
  3. 如何写简单的JSX来渲染文档。

还不错,不过这才刚刚开始……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,278评论 7 35
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,879评论 1 18
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,743评论 7 110
  • 我在18岁的那年遇见了那一群小仙女们,之所以叫他们小仙女,完全是因为他们动不动就说自己是小仙女。 仍记得在炎炎夏日...
    暖宝宝喜欢下雨天阅读 410评论 0 3
  • 这路有千万条, 路可以带你走近繁华的街道, 享受灯红酒绿的生活, 让你沉醉于眼花缭乱的战场上。 路也可以带你走遍乡...
    行情中书阅读 236评论 0 0