jsx:本質上來說,jsx只是react.createelement(component, prop, ...children) 方法的語法糖
header content
等價於:
react.createelement(
'myheader', // type
, // props
'header content' // ...children
)
jsx的語法與原生html標籤有一定相似性,不含有子節點的標籤可以使用「自閉和」形式
它的...children引數就被設定為null,接下來我們逐個分析jsx語法裡的各個元素
type:jsx語法的第一部分決定了react element的型別
大寫的type表明了它是乙個react元件的引用,所以你必須保證(1)「myelement」在作用域中;同時因為jsx會被編譯成為react.component(...)的形式,所以你還必須保證(2)react的library在作用域中
import react from 'react' // react library
import myelement from '...' // myelement component
function dosth()
就像這樣
其他值得注意的:
const mycomponets =
footer: function footer(props)
}function dosth()
首字母小寫的jsx type代表著內建元件,如div, p, span,react會將它作為html標籤
你不能使用表示式作為jsx的type,但是可以將它的結果賦值給乙個首字母大寫的變數
function dosth(props)
functin dosth(props)
jsx 的 props有多種指定的方式:
就像:
注意:if 語句和 for迴圈並不是expression,所以不能直接放在props中,但是可以放在jsx外達成相同的效果:
正確的做法是:
for (item in list)
result = dosth(result);
return }
以下兩種方式是等價的:
在字面量中,你甚至可以使用'指定乙個prop的時候,如果不指定值,那他預設是 true。但是很不推薦這樣做,因為在es6的規範中,是的簡寫形式,容易引起混淆
可以將乙個物件作為props傳入jsx
function dosth()
function dosth()
return }
以上兩種用法是等價的
更進一步,可以將props解構成特定的props,並將其他的props放入可擴充套件屬性中,如:
function header = props => = props;
return
;}
總結起來,這種方式雖然使用方便,但是有可能吧不重要的屬性也傳入;並且可能傳入不合法的屬性;所以,請謹慎使用
子元素是乙個特殊的prop-props.children,位於jsx標籤之中,它可以通過多種方法傳入:
注意:這些方法都可以混合使用
hello
jsx會自動去除多餘的空行和空格
可以將其他jsx元素作為子元素
reactcomponent可以返回乙個元素的陣列
render()
慣用法:渲染乙個jsx表示式的列表
render()
可以傳入自定義元件的子元素可以是任意的,就像其他prop
// calls the children callback numtimes to produce a repeated component
function repeat(props)
return ;}
function listoftenthings() in the list
}
);}
很不常用,但是jsx可以做到!
它們不會被渲染
tips:用於條件渲染
render()
)}
請注意,0之類的「類錯誤」值並不會被忽視,請用 expressioncanbiggerthanzero > 0的表示式來替換0值,如:
render() // 直接使用message.length不會產生預期結果
)}
另外,如果你想讓false、true、null、undefined出現在輸出中,請轉換為字串
render()
)}
React起步與JSX(一)
react開發環境準備 官網安裝 將會為我們自動生成乙個react專案 1.專案結構 2 只要有jsx語法就要引入react包 2.react中的jsx基礎語法 1 在jsx中,可以使用html的標籤,也可以使用自定義標籤 2 在jsx中,如果要使用自己建立的元件,直接通過標籤形式使用即可 impo...
React之jsx語法特性
jsx 語法,直接可以在js中使用html標籤。還可以通過花括號的形式,在html標籤中,寫js表示式。hello,world!事件是大寫 addreact中的程式設計思想是,面向資料程式設計。只要定義資料就ok了,資料變了,頁面展示的內容就會變了。react刪除不需要操作dom,只需要運算元據就可...
React中Jsx的介紹
優點 jsx執行更快 型別更安全,編譯過程如果出錯就不能編譯 jsx編寫模板更加簡單快速 jsx表示式 由html元素構成 中間如果需要插入變數用 中間可以使用表示式 中間表示式中可以使用jsx物件 屬性和html內容一樣都是用 來插入內容 jsx樣式 1.class中不可以存在多個class屬性 ...