React 實現(xiàn) TodoList 之布局

通過 TodoList 這么個小應(yīng)用流酬,讓你們了解如何通過 React 進(jìn)行開發(fā)涵防,今天要講的是我們?nèi)绾蝿?chuàng)建一個屬于我們自己的組件凳枝。

不知道 TodoList 的小伙伴可以查看下方鏈接:

http://www.todolist.cn/

還是打開之前的代碼,項目目錄如下:

在我們的項目文件夾下通過 npm run start 命令啟動我們的腳手架串稀。然后在瀏覽器訪問 localhost:3000 端口進(jìn)行訪問我們的首頁。

成功啟動之后狮杨,會看到我們之前的 Hello World 母截。

./src/App.js 這個文件刪除掉,我們重頭開始寫一個 React 組件橄教。

打開 ./src/index.js 文件清寇,把我們一開始的 App 組件修改為 TodoList 組件。

import React from 'react';
import ReactDOM from 'react-dom';
import TodoList from './TodoList';

ReactDOM.render(<TodoList />, document.getElementById('root'));

因為 TodoList 這個組件是放在當(dāng)前目錄下的护蝶,所以 from './TodoList'颗管。要把這個組件顯示在頁面之上時,所以我們還要把 render 函數(shù)里的 App 替換成 TodoList滓走。

到首頁上看一下垦江,發(fā)現(xiàn)并不好用,還給我們報了錯誤搅方。

因為我們根本就沒用 TodoList 這個組件的文件比吭。在 src 目錄下新建一個 TodoList.js 文件,這個文件是跟我們 index.js 文件中第三行代碼中的 from './TodoList' 是相對應(yīng)的姨涡。

我們并沒有寫成 from './TodoList.js' 因為后綴是可以省略掉的衩藤,在構(gòu)建代碼的時候腳手架工具會自動的幫我們自動的添加上去。(可以寫后綴也可以不寫后綴涛漂,看個人喜好)

創(chuàng)建一個新的組件赏表,首先我們要先引入 reat

import React, { Component } from 'react';

接著匈仗,通過 class 創(chuàng)建一個組件瓢剿,TodoList 是組件的名字,其他的都是固定的寫法悠轩。

class TodoList extends Component {

}

創(chuàng)建好組件之后间狂,要顯示我們的內(nèi)容通過 render 函數(shù)來進(jìn)行返回,render 函數(shù)記得加 return火架。

class TodoList extends Component {
  render() {
    return (
      <div>TodoList</div>
    )
  }
}

這樣鉴象,該顯示的內(nèi)容也寫好了,但是這個組件我們還沒有辦法使用何鸡。我們還要把這個組件給導(dǎo)出纺弊,才能正常使用。

export default TodoList;

導(dǎo)出的語句是固定寫法骡男,只要最后的名字不一樣淆游,就不多做解釋了。這樣就完成了一個完整的 TodoList 組件。

import React, { Component } from 'react';

class TodoList extends Component {
  render() {
    return (
      <div>TodoList</div>
    )
  }
}

export default TodoList;

打開 localhost:3000 的首頁稽犁,我們的 TodoList 就顯示出來了。我們的 TodoList 肯定不止是只要這么一串字符骚亿,我們把剩余的給加上已亥,添加的主要是 html 的內(nèi)容,也不多做解釋来屠。

import React, { Component } from 'react';

class TodoList extends Component {
  render() {
    return (
      <div>
        <input />
        <button>提交</button>
      </div>
      <ul>
        <li>7 點起床</li>
        <li>8 點上課</li>
        <li>13 點午休</li>
      </ul>
    )
  }
}

export default TodoList;

return() 里面的的 html 代碼虑椎,正常情況下顯示的是下面這樣的情況的。

但是腳手架卻給我們報了個錯誤俱笛。

這是因為在我們寫組件的時候捆姜,最外層的標(biāo)簽只能有一個,現(xiàn)在我們最外層有兩個標(biāo)簽迎膜,一個是 <div> 標(biāo)簽泥技,一個 <ul> 標(biāo)簽,這樣就不符合規(guī)矩了磕仅。

一般情況下珊豹,我們會在最外層套一個 <div> 標(biāo)簽,然后所有要渲染的內(nèi)容都放在這個 <div> 標(biāo)簽里榕订。

./src/TodoList.js

import React, { Component } from 'react';

class TodoList extends Component {
  render() {
    return (
      <div>
        <div>
          <input />
          <button>提交</button>
        </div>
        <ul>
          <li>7 點起床</li>
          <li>8 點上課</li>
          <li>13 點午休</li>
        </ul>
      </div>
    )
  }
}

export default TodoList;

加上最外層的 <div> 標(biāo)簽店茶,這樣就正常顯示了。

打開瀏覽器(谷歌瀏覽器)控制臺的 Elements 劫恒,會發(fā)現(xiàn)那個用來處理組件問題的 <div> 標(biāo)簽也顯示了出來贩幻,有時候我們這個標(biāo)簽也用不上,放在那里有的小伙伴會覺得別扭两嘴,這個問題當(dāng)然也是可以解決的啦丛楚。在 React 16 之后,官方提供了一個 Fragment 的占位符憔辫。

只要在 import 中引入 Fragment 就可以了鸯檬,然后把我們的 <div> 標(biāo)簽替換成 Fragment 就可以了。

import React, { Component, Fragment } from 'react';

class TodoList extends Component {
  render() {
    return (
      <Fragment>
        <div>
          <input />
          <button>提交</button>
        </div>
        <ul>
          <li>7 點起床</li>
          <li>8 點上課</li>
          <li>13 點午休</li>
        </ul>
      </Fragment>
    )
  }
}

export default TodoList;

簡單的頁面布局就這樣了螺垢,我們后續(xù)需要實現(xiàn)的是:

獲取輸入內(nèi)容喧务,點擊提交后添加到 ul 標(biāo)簽內(nèi),然后把內(nèi)容渲染到頁面上枉圃。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末功茴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子孽亲,更是在濱河造成了極大的恐慌坎穿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異玲昧,居然都是意外死亡栖茉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門孵延,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吕漂,“玉大人,你說我怎么就攤上這事尘应』棠” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵犬钢,是天一觀的道長苍鲜。 經(jīng)常有香客問我,道長玷犹,這世上最難降的妖魔是什么混滔? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮歹颓,結(jié)果婚禮上遍坟,老公的妹妹穿的比我還像新娘。我一直安慰自己晴股,他們只是感情好愿伴,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著电湘,像睡著了一般隔节。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寂呛,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天怎诫,我揣著相機(jī)與錄音,去河邊找鬼贷痪。 笑死幻妓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的劫拢。 我是一名探鬼主播肉津,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舱沧!你這毒婦竟也來了妹沙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤熟吏,失蹤者是張志新(化名)和其女友劉穎距糖,沒想到半個月后玄窝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡悍引,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年恩脂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趣斤。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俩块,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唬渗,到底是詐尸還是另有隱情,我是刑警寧澤奋渔,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布镊逝,位于F島的核電站,受9級特大地震影響嫉鲸,放射性物質(zhì)發(fā)生泄漏撑蒜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一玄渗、第九天 我趴在偏房一處隱蔽的房頂上張望座菠。 院中可真熱鬧,春花似錦藤树、人聲如沸浴滴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽升略。三九已至,卻和暖如春屡限,著一層夾襖步出監(jiān)牢的瞬間品嚣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工钧大, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留翰撑,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓啊央,卻偏偏與公主長得像眶诈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瓜饥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容