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,從攻克JSX開始ReactJS
- React中JSX的理解ReactJS
- react-native 學習心得React
- react中的jsx語法ReactJS
- react native學習筆記(三)React Native筆記
- react native學習筆記(二)React Native筆記
- react native學習筆記(一)React Native筆記
- React Native學習筆記----React Native簡介與環境安裝React Native筆記
- react-native 學習 第一層React
- React Native框架探索學習筆記React Native框架筆記
- React Native Android學習筆記 - 2015React NativeAndroid筆記
- React-Native學習資料分享React
- React Native學習指南:React Native嵌入到原生應用的一次嘗試React Native
- React Native學習指南:必知的 Props 與 StateReact Native
- React Native元件學習 StatusBar(ES6)React Native元件
- <react學習筆記(2)>JSX語法和樣式的設定React筆記JS
- react native 包學不包會系列--認識react nativeReact Native
- React Native 中的狀態列React Native
- React專題:JSXReactJS
- react理解(一)jsxReactJS
- React 基礎_JSXReactJS
- [React Native]react-native-scrollabReact Native
- 一起來學習React-Native之react-navigation基本解析ReactNavigation
- react之JSX本質ReactJS
- 假如React沒了JSXReactJS
- React.js中JSX的原理與關鍵實現ReactJS
- 一份傳男也傳女的 React Native 學習筆記React Native筆記
- React Native Icon方案:react-native-svgReact NativeSVG
- 【譯】React Native中的動畫漸變React Native動畫
- react native 包學不包會系列--react native開發基礎知識React Native
- React Native轉web方案:react-native-webReact NativeWeb
- React Native 使用 react-native-webview 渲染 HTMLReact NativeWebViewHTML
- [譯] Airbnb 在 React Native 上下的賭注(四):React Native 退役AIReact Native
- (譯)React Native 中的導航器怎麼選?React Native
- react-native配置react-native-image-crop-pickerReact
- React Native選擇器元件-react-native-slidepickerReact Native元件IDE
- React Native 的未來與React HooksReact NativeHook
- React jsx 中寫更優雅、直觀的條件運算子ReactJS