簡單易懂的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,227評論 7 35
  • 原教程內容詳見精益 React 學習指南,這只是我在學習過程中的一些閱讀筆記,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,860評論 1 18
  • GitChat技術雜談 前言 本文較長,為了節省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,710評論 7 110
  • 我在18歲的那年遇見了那一群小仙女們,之所以叫他們小仙女,完全是因為他們動不動就說自己是小仙女。 仍記得在炎炎夏日...
    暖寶寶喜歡下雨天閱讀 395評論 0 3
  • 這路有千萬條, 路可以帶你走近繁華的街道, 享受燈紅酒綠的生活, 讓你沉醉于眼花繚亂的戰場上。 路也可以帶你走遍鄉...
    行情中書閱讀 228評論 0 0