【簡單的react】 當你需要使用JSX的拼接的時候

項目體驗

歡迎體驗【react項目:餓了麼點單流程】:http://47.93.235.67:8083

ps:要是遇到打不開的情況,那就是我服務掛掉了,react使用熱更新服務器無法用nohup掛載,終端窗口退出會導致頁面打不開,項目剛上我還沒解決這個問題

寫項目的原因是,看了網上大量的文章,都不如一個實戰來的更深有體會。

參考資料:

http://huziketang.mangojuice.top/books/react/lesson2


任何新的概念都會加深新人理解的難度,所以這裏不會出現新詞,所有的解釋我都最多采用前端常用技術作爲輔助理解的文字描述。

本節目的


這節講JSX的拼接是因爲你可能會寫簡單的JSX,但當你遇到數據判斷時,你 希望能完成像js拼接HTML字符串那樣組合成最終的結構。

幫助簡單理解一下


JSX不同與DOM節點,它是react的標記語言,標記語言本身就是表示和存儲數據。就像一個有格式的變量,不停地被賦予值,分配出去。


假如一個文件存儲瞭如下JSX結構
<div>
	<div>I love you</div>
</div>

用JS讀出來,直接放到頁面上,同樣的結構會被瀏覽器引擎渲染成預定義的樣式,瀏覽器能識別div,那它就是html,html是有默認展示效果的。
兩者之間的聯繫在於此。
區別在,標記語言可擴展。你能生成以下一堆標記,whatever
<myHouse>
  <chair>椅子</chair>
  <desk>桌子</desk>
</myHouse>

但你把他們讀出來放到頁面上,不是瀏覽器預定義的標籤全都被識別成行內標籤,也沒有seo的效果。
在這裏插入圖片描述
JSX就像一種具有特殊規則的數據載體。


當你需要使用JSX的拼接的時候


JSX內使用{}寫javascript邏輯

export default function Myhouse(){
	var name = "我要上天一起嗎";
	return (
		<myHouse>
 			<chair>椅子</chair>
 			<desk>桌子</desk>
 			<card>{name}</card>
 		</myHouse>
	)
}

在這裏插入圖片描述
但注意JSX禁止

{}內不允許出現分號,不能使用if else語句,判斷句以三元運算代替

但是它可以

使用三元句式可以接受大型JSX“字符串”拼接(如果你把它想象成js的html字符串變量)


拼接不是使用連接符+, 而是使用()把jsx包起來(單行能省略())


()裏面的JSX語法,只接收一個根標籤


()內可以連續拼接,比如({ ( { ( )} ) {()} }),它不像變量提升,你寫在哪裏就原樣輸出在哪個位置,變量會被{}符號自動解析掉


想要優雅點,拼接的JSX內容都可以在return()執行之前生成,使用某個變量(variable)接住,在return裏直接使用{variable}


先來一個單行JSX
在這裏插入圖片描述
在這裏插入圖片描述
再來個多行的效果。JSX是直接寫在行內相應位置的。
在這裏插入圖片描述
在這裏插入圖片描述
優雅點,我們這樣寫

在這裏插入圖片描述

數組(不能是json對象,json要轉化爲array,可以使用Object.values(obj))map遍歷寫法的兩種賦值方式


一個是直接寫在JSX裏面


用{}包含,如果內部返出jsx包含了變量,變量還要再加上{},只要jsx內部遇到變量,想要解析都要用{}包住變量,而js卻可以不加任何修飾符直接寫jsx語法。
在這裏插入圖片描述
在這裏插入圖片描述
因爲{}(大部分情況下)最終都是返回一個jsx節點,上面arr的等價寫法是第二種把arr的結果直接在return之前賦予一個變量,然後賦給jsx。

在這裏插入圖片描述


return (
	<div>
		<header></header>
		<section>
			{true ? <div><span>1</span></div> : <div><span>2</span></div>}
		</section>
		<footer></footer>
	</div>
}

判斷的後返回的jsx可自行加()然後做折行。

over。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章