從零學習React技術棧:JSX 入門

JSX 其是一個語法擴展,它既不是單純的字符串,也不是 HTML,雖然長得和 HTML 很像甚至基本上看起來一樣。愛掏網 - it200.com但事實上它是 React 內部實現的一種,允許我們直接在 JS 里書寫 UI 的方式。愛掏網 - it200.com

有些同學來看 JSX 可能也會覺得它像一種模板語言之類的。愛掏網 - it200.com事實上也不是,它就是基于 JavaScript,在 React 當中的一種語法擴展的實現。愛掏網 - it200.com

JSX 被用來創建 React 當中的 Elements,React 當中的元素。愛掏網 - it200.com然后 React 再通過一些方法,把 JSX 創建的元素,渲染成我們在瀏覽器當中看到的 DOM元素。愛掏網 - it200.com

在正式介紹 JSX 的相關知識前,我再強調幾遍:

JSX 盡管使用了非常多的類似 HTML 的標簽語法,但 JSX 只是一種在 JavaScript 當中書寫 UI 的實現,所以你在理解的時候不要把 HTML 的相關知識先入為主地代入。愛掏網 - it200.com不要問為什么可以這樣寫,怎么能這么寫,怎么和 HTML 不一樣?一類的問題,因為本來就不是同一種東西,另外也不要覺得 JSX 奇怪,不要覺得不適應,你寫寫就適應了。愛掏網 - it200.com而且相信我,JSX 已經是書寫 UI 最高效還保持了良好可讀性的一種實現了。愛掏網 - it200.com

另外 JSX 也有一些和 HTML 語法的差異,本篇教程的內容不可能涵蓋全部,但以后出現在教程代碼中的特例我都會強調說明。愛掏網 - it200.com

我們想要在瀏覽器里直接運行采用 JSX 語法的 JavaScript 顯然暫時是不可能實現的,在實際的生產過程中,我們需要利用 Babel 一類的轉譯器來將我們的 JSX 語法或者 ES6 語法轉譯成瀏覽器可以直接運行的 JavaScript,事實上 JSX 在經過轉譯之后,會變成 React 創建 Element 的一個方法:

ReactDOM.render( 
    

Hello world!

, document.getElementById('container') )

轉譯之后就會變成下面這樣:

// 事實上你書寫的所有標簽語法最后都會被轉換成創建元素的 JS 方法。愛掏網 - it200.com
ReactDOM.render(
    React.createElement('p',null,`Hello world!`),
    document.getElementById('container')
)

在本地配置 React 的開發環境是相對來說比較復雜的操作。愛掏網 - it200.com為了讓同學們盡快上手,我們一開始還是在在線代碼編輯器里編寫我們的代碼。愛掏網 - it200.com

比如我們可以使用 React 官方推薦的 Codepen。愛掏網 - it200.com

打開 Codepen 網站,當然為了方便你日后的學習,保存你的代碼,最好注冊一個賬號。愛掏網 - it200.com(注冊理所當然需要 Google 人機驗證等步驟,所以請自備梯子,學習編程這方面的技能早晚要掌握,如果你怎么都打不開這個網站或者怎么都注冊不好,可以先放過,老老實實使用大清局域網)。愛掏網 - it200.com

之后我們新建一個 Pen,然后在 JS 編輯窗口的設置面板里添加 reactreact-dom 兩個庫,再將 preprocessor 預處理器設置成 Babel,確定保存,就可以開始愉快地編碼啦!

看一個Codepen的在線示例:

當然,如果你的網速較慢或者無法順利訪問到國際網絡,還可以使用離線Web應用 Codepan。愛掏網 - it200.com

const title = 

React Learning

我們用JSX創建的元素對象一般來說是不變的,所以通過 const關鍵字來聲明一個 React元素,而不是我們以往經常使用的 var愛掏網 - it200.com

為了能讓我們的 JSX 元素在頁面上渲染出來預覽查看,我們還需要添加兩段代碼:

在 HTML 窗格里添加:


在JS窗格的最底部添加:

// 這便是將 JSX元素渲染成 DOM 的方法 
ReactDOM.render(title,document.getElementById('root'))

我們通過 ReactDOM 的 render 方法,將 title 元素渲染至 idroot 的頁面容器當中。愛掏網 - it200.com

JSX 的標簽同樣可以擁有自己的屬性:

const title = 

React Learning

但它和 HTML 又不是完全相同的,例如我們想要為 JSX標簽添加 class 的時候需要:

// 注意是 className 而不是 class
const title = 

React Learning

所有支持的 HTML屬性在這里可以查閱。愛掏網 - it200.com

JSX 的標簽也可以像 HTML 一樣相互嵌套,一般有嵌套解構的 JSX 元素外面,我們習慣于為它加上一個小括號:

const title = (
    
        

React Learning

Let's learn JSX

)

需要注意的是,JSX 在嵌套時,最外層有且只能有一個標簽,否則就會出錯喲:

// 這是一個錯誤示例
const title = ( 
    

React Learning

Let's learn JSX

)

在 JSX 元素中,我們同樣可以使用 JavaScript 表達式,在 JSX 當中的表達式需要用一個大括號括起來:

function sayhi(name) {
    return 'Hi,' + name;
}
const title = (
    
        

React Learning

Let's learn JSX. {sayhi('you')}

)

好了,有關 JSX 的基礎知識,我們掌握到這里就差不多了。愛掏網 - it200.com在之后的課程中,隨著我們學習的進一步深入,也會在需要的時候介紹更深入的有關 JSX 的知識。愛掏網 - it200.com

  • Tutorial: JSX
  • Getting Started With React and JSX
  • Getting Started with React and JSX
  • Understand JSX at a Deeper Level

余博倫

知乎專欄【從零學習前端開發】作者,FreeCodeCamp中國發起人,React中文社區布道師。愛掏網 - it200.com致力于為前端初學者提供良心的干貨、暖心的教程、真心的分享。愛掏網 - it200.com微信公眾號 yunote。愛掏網 - it200.com

聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 亚洲综合激情另类小说区| 免费网站看av片| a√天堂中文在线最新版| 欧美亚洲日本视频| 国产一区中文字幕| 97色伦图片7778久久| 日韩人妻系列无码专区| 公和我做好爽添厨房| www.欧美色图| 成人性生交大片免费看好| 亚洲字幕在线观看| 老师…好紧开裆蕾丝内裤| 国产综合成色在线视频| 久久久久99精品成人片欧美| 用劲好爽快点要喷了视频| 国产成人无码一区二区在线播放| 一个人看的片免费高清大全| 最近免费中文字幕mv电影| 全黄裸片一29分钟免费真人版| 青青草原免费在线| 巨胸喷奶水www永久免费| 亚洲va在线va天堂成人| 精品国产免费观看久久久| 国产欧美日韩在线播放| wwwxxx日本| 日本香蕉一区二区三区| 亚洲永久精品ww47| 翁熄系列乱老扒bd在线播放| 国产精品伦一区二区三级视频| 一级片在线免费看| 曰批免费视频播放60分钟| 人文艺术欣赏ppt404| 草草草在线观看| 国产精品天堂avav在线| 一区二区三区无码高清视频| 日韩男人的天堂| 亚洲欧美日韩闷骚影院| 美女张开腿黄网站免费| 国产欧美一区二区精品久久久 | 老八吃屎奥利给原视频带声音的| 国产精品无码不卡一区二区三区|