用最簡單的範例,10分鐘入門React!

閱讀時間約 4 分鐘
本文章目的是希望可以用最簡單的範例,來讓大家了解React到底是什麼東西,有什麼好處,並且套用bootstrap的navbar,加上自己客製的css,來達到component重用的目的!
用React來開發網頁,必須把目標拆解成一個個component,最後組合起來就成為一個網站!
假如我們目標是要開發一個有navbar的網頁,可以把它想像成是這樣組成的:
橘色的是Main元件,裡面包含了綠色的Navbar這個元件!

以下直接透過範例來了解,並開發一個可重用的navbar component。
以下是我的環境配置:
專案結構:
public/index.html長這樣:
這邊直接用CDN的方式import bootstrap,然後加上自己定義的navbar.css。
放在components下,未來如果有更多元件,可以有自己的css。
app.jsx:
app.jsx為程式進入點,這邊可以想像成,我的網頁有一個最大的Main元件,裡面包含很多子元件,所以這邊直接把Main元件import進來,指到root div。
Main.jsx:
而Main元件裡面又可能有navbar, header, content, footer...等等,這邊的範例為了簡單化,只做了一個Navbar元件。
其實就是import Navbar,直接在render()中回傳Navbar,然後設定bgTheme 這個props,傳入Navbar 元件中。
props可以用來傳參數用,假如這個navbar會在很多地方用到,然後在不同地方想要有不同的背景顏色,就可以用這種方式!
最後的export Main,主要是想要讓app.jsx可以import的到Main。
Navbar.jsx:
在Navbar裡面就是直接套bootstrap,要注意的是jsx中要用className。
className={`navbar navbar-default ${this.props.bgTheme}`}
這個東西意思其實就是除了boostrap本身有的兩個class: navbar, navbar-default外,多設定一個傳進來的參數bgTheme。
public/css/components/navbar.css:
從原始碼來看應該不難理解,由於index.html中head有import bootstrap lib,還有自己定義的navbar.css,最後jsx都被build在bundle.js裡:
最後來看看網頁的結果:
值得一提的是,如果我把Main.jsx中傳入的navbar背景主題換掉,改成navbar-theme-red,navbar背景就會變紅色。
結論:
使用React開發網頁必須把網頁拆解成元件來思考,這個範例其實就是Main裡面有Navbar,未來如果有Footer元件,相信看到這邊,大家都知道怎麼加了吧!
假如一個元件被開發出來後,在很多頁面都會用到,而且只差在style可能不太一樣,就很適合用props這個特性,把style傳入元件中,例如本範例的navbar,達到component重用的目的!
當然,React還有很多東西需要更深入學習,例如事件處理、元件生命週期、資料串接等等東西,小弟也是剛入門順便做個筆記,若有錯誤還請不吝給小弟指教,希望這篇文章可以幫助到大家,未來若有機會再補充更進階的應用,謝謝!
Source code:
為什麼會看到廣告
21會員
161內容數
留言0
查看全部
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
接續上一篇,這邊要來寫一個React hello world app,最後安裝webpack-dev-server來提升開發效率。 使用npm安裝react, react-dom: $ npm install react react-dom --save dependencies下紀錄的是生產環境會
React開發有兩種方式,一種是使用CDN方式include react的官方lib,然後使用babel來將JSX編譯成瀏覽器看得懂的javascript。 但是在react中還會使用到sass, scss等等,還需要額外編譯成css瀏覽器才看得懂。 而webpack的誕生,就是為了解決上述的問題,
在select的時候發現回傳的primary key都是0,這時可能是因為primary key為非數字,如果沒有在model定義 auto increment是false, 預設會認為是true,所以要在model中多設定這行: public $incrementing = false; 本筆
1. 進入https://notify-bot.line.me/zh_TW/ 登入line後,點選右上角個人頁面 2. 點選發行權杖, 輸入名稱與要接收通知的群組。 按下發行後,複製token。 3. 記得將LINE Notify這個帳號加入該群組中: 4. 使用curl發送訊息: curl
直接從程式碼來看,假設code這樣寫: $this->customer->select(['id']) ->where('cell_1', '=', $cell_1) ->orWhere(function ($query) use ($cell_2) {  $query->whereNotNull
在Model中常看到這兩個屬性fillable, guarded: protected $fillable=['name','job']; protected $guarded=['user_id']; 其中guarded是黑名單的意思,fillable則是白名單。 這兩個屬性是用來設定是否允許批量
接續上一篇,這邊要來寫一個React hello world app,最後安裝webpack-dev-server來提升開發效率。 使用npm安裝react, react-dom: $ npm install react react-dom --save dependencies下紀錄的是生產環境會
React開發有兩種方式,一種是使用CDN方式include react的官方lib,然後使用babel來將JSX編譯成瀏覽器看得懂的javascript。 但是在react中還會使用到sass, scss等等,還需要額外編譯成css瀏覽器才看得懂。 而webpack的誕生,就是為了解決上述的問題,
在select的時候發現回傳的primary key都是0,這時可能是因為primary key為非數字,如果沒有在model定義 auto increment是false, 預設會認為是true,所以要在model中多設定這行: public $incrementing = false; 本筆
1. 進入https://notify-bot.line.me/zh_TW/ 登入line後,點選右上角個人頁面 2. 點選發行權杖, 輸入名稱與要接收通知的群組。 按下發行後,複製token。 3. 記得將LINE Notify這個帳號加入該群組中: 4. 使用curl發送訊息: curl
直接從程式碼來看,假設code這樣寫: $this->customer->select(['id']) ->where('cell_1', '=', $cell_1) ->orWhere(function ($query) use ($cell_2) {  $query->whereNotNull
在Model中常看到這兩個屬性fillable, guarded: protected $fillable=['name','job']; protected $guarded=['user_id']; 其中guarded是黑名單的意思,fillable則是白名單。 這兩個屬性是用來設定是否允許批量
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
人們非常生氣 健康的一半是精神健康,病的一半是精神疾病。所以,一個人應該不是感情的囚犯,而是感情的主人。必須控制自己的心情。請不要讓他們控制你。重要的是要記住,心情是健康的接力棒。小型榨油機 我們應該經常記住生活中的三種幸福。 如果家庭不和,人們就容易生病。 一部分的家人每天都在吵鬧。我們應該知道7
10個投資人有9個想等巿場下跌才買進,因為他覺得股巿就是起起浮浮,大家都想要在最佳時機進場,這樣的認知沒有錯,錯的是他對人性的認知不夠。 科斯托蘭尼曾提過:「下坡時肩膀上沒有麥子的人,上坡的時候也不會有。」投資心理在下跌段時,投資人心理的O.S.為:還會跌,等跌多一點再買;止跌時會等確立上昇趨勢才會
Thumbnail
埋首苦幹、用時間換取成果,「勤奮」不過是職場上低層次的表演,透過「閱讀」訓練邏輯思考、廣為學習各種知識及他人成功經驗,是最快提升職場實力的方法。 如果你總是抽不出時間讀書,或有選書障礙、經常抓不到要點,誠摯推薦你追蹤、訂閱《老查商業好書簡報》。
Thumbnail
待辦清單應該是最廣為人用的時間管理工具之一。但你是否常常列了一堆清單,卻無法有效完成,反而被堆積如山的任務給壓得喘不過氣呢?其實,你並不孤單。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
人們非常生氣 健康的一半是精神健康,病的一半是精神疾病。所以,一個人應該不是感情的囚犯,而是感情的主人。必須控制自己的心情。請不要讓他們控制你。重要的是要記住,心情是健康的接力棒。小型榨油機 我們應該經常記住生活中的三種幸福。 如果家庭不和,人們就容易生病。 一部分的家人每天都在吵鬧。我們應該知道7
10個投資人有9個想等巿場下跌才買進,因為他覺得股巿就是起起浮浮,大家都想要在最佳時機進場,這樣的認知沒有錯,錯的是他對人性的認知不夠。 科斯托蘭尼曾提過:「下坡時肩膀上沒有麥子的人,上坡的時候也不會有。」投資心理在下跌段時,投資人心理的O.S.為:還會跌,等跌多一點再買;止跌時會等確立上昇趨勢才會
Thumbnail
埋首苦幹、用時間換取成果,「勤奮」不過是職場上低層次的表演,透過「閱讀」訓練邏輯思考、廣為學習各種知識及他人成功經驗,是最快提升職場實力的方法。 如果你總是抽不出時間讀書,或有選書障礙、經常抓不到要點,誠摯推薦你追蹤、訂閱《老查商業好書簡報》。
Thumbnail
待辦清單應該是最廣為人用的時間管理工具之一。但你是否常常列了一堆清單,卻無法有效完成,反而被堆積如山的任務給壓得喘不過氣呢?其實,你並不孤單。