React Native 中的JSX學習
JSX是什麼
字面上來看JSX即 JavaScript XML取首字母結合,所以JSX並不是一門新語言,僅僅是個語法糖。
React發明了JSX,利用HTML語法來建立虛擬DOM。當遇到<,JSX就當HTML解析,遇到{就當JavaScript解析。
我們在瀏覽器執行的時候,JSX語法會通過Babel轉換成瀏覽器認識的JS。
Babel:我們裝RN的時候你會再目錄看到很多Babel資料夾,JSX語法依賴於Babel進行解析翻譯。
那麼問題來了,這種虛擬DOM的方式會不會影響效能呢。
答案肯定是不會的,反而會比我們操作DOM效能更好,其實我們也可以自己用JS寫一個虛擬DOM,一般水平有限的寫還是有困難的,就算寫出來,也不一定有別人的效能強,React 虛擬DOM用了Diff演算法,降低了頻發而發展的操作DOM,所以效能是增強的。
JSX的優點:
1☞類XML語法,容易擴充套件。
2☞增強JS語義
3☞結構清晰
4☞抽象程度高
5☞程式碼模組化
JSX在React Native
該文章主要介紹JSX在React Native 中的實際使用,沒有詳細介紹JSX語法。
注意:demo中所有函式應寫在class內。
1.JSX 中嵌入變數,表示式,樣式
這段Demo在標籤裡嵌入了變數,表示式和樣式兩種寫法
var testName = 'zzy';
render() {
return(
return(
<View style={styles.container}>
<Text>
{testName}
</Text>
<Text style={{marginTop:20}}>
{'這是一個表示式:'+ (5+3)}
</Text>
</View>
);
);
}
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
});
2.函式呼叫
函式和JS函式寫法是一樣的格式如下:
funcName (引數){實現內容}
需要注意RN 標籤中的函式呼叫,簡要的說下載render()函式中的呼叫規則。
①.如果你需要在render中直接呼叫的話和普通js呼叫規則相同。如下面的例子:
render() {
this.testFunc()
}
testFunc(){
alert('我不需要框框');
}
②.如果您在render中直接呼叫函式得到標籤去搭建介面的話。如下面的例子:
render() {
return this.renderLoadingView();
}
renderLoadingView() {
return (
<View style={styles.container}>
<Text>
Loading movies...
</Text>
</View>
);
}
var heros = ['yasuo','ruiwen','liqing'];
render() {
return(
<View style={styles.container}>
{this.renderLoadForView()}
</View>
);
}
renderLoadForView(){
var forView = [];
for (var i = 0; i < heros.length; i++) {
forView.push(
<Text key={i}>
{heros[i]}
</Text>
);
}
return forView;
}
3. render中渲染固定標籤陣列,如下面的例子:
render() {
return(
<View style={styles.container}>
{this.loadArrayView()}
</View>
);
}
loadArrayView(){
return(
[
<Text key={1}>
陣列1
</Text>,
<Text key={2}>
陣列2
</Text>
]
);
}
總結
JSX語法可以當做加強版的JS,在React中使用,依賴Babel編譯。 JSX最明顯的特點就是可以在JS中寫標籤,並不用加引號,在標籤裡使用JS變數也十分方便 ,在標籤裡當遇到{}當做JS解析。
JSX在ReactNative還有很多特點,今後慢慢的探究,學習消化。
相關文章
- React學習筆記-JSXReact筆記JS
- react學習系列之深入jsxReactJS
- 學習React,從攻克JSX開始ReactJS
- React中JSX的理解ReactJS
- React Native學習 認識Recat NativeReact Native
- react-native 學習心得React
- React-Native學習指南React
- react中的jsx語法ReactJS
- react native學習筆記(一)React Native筆記
- react native學習筆記(三)React Native筆記
- react native學習筆記(二)React Native筆記
- react-native 學習 第一層React
- React Native框架探索學習筆記React Native框架筆記
- React-Native學習資料分享React
- React Native英文詳細學習教程React Native
- React Native學習之 ListView 的簡單使用React NativeView
- React Native學習筆記----React Native簡介與環境安裝React Native筆記
- React Native學習指南:React Native嵌入到原生應用的一次嘗試React Native
- [React]JSX的用法ReactJS
- <react學習筆記(2)>JSX語法和樣式的設定React筆記JS
- React Native學習指南:必知的 Props 與 StateReact Native
- iOS學習React-Native 的flexbox佈局iOSReactFlex
- 學習React Native必看的幾個開源專案React Native
- React Native 學習指南(三) - 把玩更多UI元件React NativeUI元件
- React Native元件學習 StatusBar(ES6)React Native元件
- React Native 中的狀態列React Native
- react native 包學不包會系列--認識react nativeReact Native
- react-native學習筆記之 生命週期React筆記
- React-Native學習系列(二) Image和ScrollViewReactView
- React 基礎_JSXReactJS
- React專題:JSXReactJS
- react理解(一)jsxReactJS
- React Native 入門(三) - 給 Android 開發者的學習建議React NativeAndroid
- React Native學習之Image載入本地圖片的坑(iOS)React Native地圖iOS
- 【譯】React Native中的動畫漸變React Native動畫
- React Native中的約束規範React Native
- React Native Android學習筆記 - 2015React NativeAndroid筆記
- React Native學習實踐:動畫初探之載入動畫React Native動畫