React入門:關于JSX語法二

而創建子元素可以直接交給JSX轉化器

插圖1

Javascript表達式

在JSX語法中寫Javascript表達式只需要用{}即可,比如下面這個使用三目運算符的例子:JSX是HTML和JavaScript混寫的語法,當遇到<,JSX就當HTML解析,遇到{就當JavaScript解析。

插圖2
屬性表達式
子表達式

不過要注意的是,JSX語法只是語法糖,它的背后是調用ReactElement的構造方法React.createElement的,所以類似這樣的寫法是不可以的:


可以從轉化后的Javascript代碼中看出明顯的語法錯誤,所以要不用三目運算符,要不就這樣寫:

傳播屬性(Spread Attributes)

如果提前就知道了組件的屬性的話,寫起來很容易。例如component組件有兩個動態的屬性foo和bar:

而實際上,有些屬性可能是后續添加的,我們沒辦法一開始就確定,我們可能會寫出下面不好的代碼:

這樣寫是錯誤的,因為我們手動直接添加的屬性React后續沒辦法檢查到屬性類型錯誤,也就是說,當我們手動添加的屬性發生類型錯誤時,在控制臺是看不到錯誤信息的。

在React的設定中,初始化完props后,props是不可變的。改變props會引起無法想象的后果。

延伸屬性

為了解決這個問題,React引入了屬性延伸

這樣就相當于:

當需要拓展我們的屬性的時候,定義個一個屬性對象,并通過{…props}的方式引入,在JSX中,可以使用...運算符,表示將一個對象的鍵值對與ReactElement的props屬性合并,這個...運算符的實現類似于ES6 Array中的...運算符的特性。,React會幫我們拷貝到組件的props屬性中。重要的是—這個過程是由React操控的,不是手動添賦值的屬性。

它也可以和普通的XML屬性混合使用,需要同名屬性,后者將覆蓋前者:

JSX 陷阱

style屬性

在React中寫行內樣式時,要這樣寫,不能采用引號的書寫方式

HTML轉義

比如我們有一些內容是用戶輸入的富文本,從后臺取到數據后展示在頁面上,希望展示相應的樣式

結果頁面直接輸出內容了:

React默認會進行HTML的轉義,避免XSS攻擊,如果要不轉義,可以這么寫:

參考資料

JSX in Depth

JSX Spread Attributes

If-Else in JSX

JSX Gotchas

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 以下內容是我在學習和研究React時,對React的特性、重點和注意事項的提取、精練和總結,可以做為React特性...
    科研者閱讀 8,292評論 2 21
  • 005@關于JSX語法 轉(有所更改):React入門:關于JSX語法可以參考的資料:React.js學習筆記之J...
    驀然之間的閱讀 942評論 0 0
  • 本筆記基于React官方文檔,當前React版本號為15.4.0。 1. 安裝 1.1 嘗試 開始之前可以先去co...
    Awey閱讀 7,798評論 14 128
  • JSX是React的核心組成部分,它使用XML標記的方式去直接聲明界面,界面組件之間可以互相嵌套??梢岳斫鉃樵贘S...
    可樂愛上咖啡閱讀 72,039評論 1 63
  • 安裝: 概述 React起源于FaceBook的內部項目,因為該公司對市場上所有的JavaScript MVC框架...
    姒沝無痕閱讀 738評論 0 0