Fuyaode@逢甲大學
2017/09/05
定義 UI 要怎麼呈現,而負責 Render 和操作,由 React 負責
showcase 官方頁面 ShowCase
中國 ShowCase
$ adb devices
$ adb tcpip 5556
$ adb connect $ip:5556
$ adb devices
/* 測試是否有連上 */
$ adb shell am start -a android.settings.SETTINGS
React Native 目前需要 Android Studio2.0 或更高版本。
SDK Platforms 選擇 Google APIs 、 Android SDK Platform 23
SDK Tools 選擇 Android SDK Build-Tools 23.0.1
確保 ANDROID_HOME 環境變數跟 SDK 路徑一致。
Windows
控制台 > 系統及安全性 > 進階系統設定 > 進階 > 環境變數 > 新增
控制台 > 系統及安全性 > 進階系統設定 > 進階 > 環境變數 > 選擇 PATH > 編輯 在後方新增
;C:\Users\使用者名稱\AppData\Local\Android\sdk\platform-tools;C:\Users
\使用者名稱\AppData\Local\Android\sdk\tools
Mac 開起 ~/.bashrc 或 ~/.zshrc 或 ~/.profile 在最後加上
export ANDROID_HOME=${HOME}/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
$ npm install -g react-native-cli
$ react-native init HelloJs
$ cd HelloJs
$ npm start
$ react-native run-android
.
├── __tests__
├── android
├── index.android.js
├── index.ios.js
├── ios
├── node_modules
└── package.json
App 名稱位置 :
./android/app/src/main/res/values/strings.xml
./android/app/src/main/res/mipmap-*
App icon:
Flexbox,就可以在不同屏幕尺寸上提供一致的佈局結構。 雖然跟網頁 CSS 的 flex 很像,但是還是有些為的差異 例如: flexDirection 在網頁中預設是 row,在 RN 裡面預設為 column。
<Text style=>A</Text>
<Text style={[{ color: 'red' }, { color: 'blue' }]}>A</Text>
<Text style={styles.red}>red</Text>
const styles = StyleSheet.create({
red: {
color: 'red',
},
});
flexDirection 決定佈局的主軸,可設定子元素是水平排列還是垂直排列
justifyContent 可以決定其子元素,沿著主軸的排列方式
alignItems 可以決定其子元素,沿着次軸的排列方式
import React, { Component } from 'react';
import {
StyleSheet,
View,
Image,
Text,
} from 'react-native';
export default class FlexSample extends Component {
render() {
return (
<View style=>
<View style=>
<View style=>
<Text style=>右上</Text>
</View>
<View style=>
<Text style=>置中</Text>
</View>
</View>
<View style=>
<View style=>
<Text style=>右上?</Text>
</View>
<View style=>
<Text>1</Text>
<Text>2</Text>
<Text>3</Text>
</View>
</View>
</View>
);
}
}
Code 太長,無法一頁顯示
flexboxfroggy - 用遊戲學習 CSS 的 flexbox 玩到第 12 關
yoga - Facebook 實作的跨平台 Flex library
import React, { Component } from 'react';
import {
View,
} from 'react-native';
export default class ViewSample extends Component {
render() {
return (
<View style=>
<View style= />
<View style= />
</View>
);
}
}
用於顯示文本的 React Component,並且它也支持嵌套、樣式,以及觸摸處理。
import React, { Component } from 'react';
import {
View,
Text,
StyleSheet,
Alert
} from 'react-native';
export default class TextSample extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.text1}>HelloJS</Text>
<Text style={styles.baseText}>
<Text style={styles.title}>HelloJS</Text>
<Text style={styles.desc}> Good</Text>
</Text>
<Text
style=
numberOfLines={1}
onPress={() => {
Alert.alert("阿!!", "你點到我了");
}}
>
測試測試測試測試測試測試測試
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
padding: 30,
},
text1: {
fontSize: 30,
},
baseText: {
fontSize: 18,
color: 'blue'
},
title: {
fontSize: 24,
fontWeight: 'bold',
},
desc: {
color: 'red',
}
})
Code 太長,無法一頁顯示
用於顯示圖片的 React Component
/android/app/src/main/res
使用範例:
assets
├── man@2x.png
├── man@3x.png
└── man.png
<Image source={require('./assets/man.png')} />
使用範例:
<Image source= style= />
Android:
<Image source= style= />
使用範例:
<Image
style=
source=
/>
import React, { Component } from 'react';
import {
StyleSheet,
View,
Image
} from 'react-native';
export default class ImageSample extends Component {
render() {
return (
<View style={styles.container}>
<Image
style=
source=
/>
<Image
style=
source={require('./assets/man.png')}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
padding: 30,
},
})
React Natvie 當中拿來當作按鈕的元件
使用範例:
<Button
onPress={() => {}}
title="HelloJS"
color="#841584"
/>
使用 ./ListItem.js 做出的樣式