BUILD MOBILE APPS WITH REACT
FB group: React Native Taiwan
中央資工所
創科資訊工程師
CTJS 2016 講者
React Native Taiwan 社群發起人
前端及 React 愛好者,喜好參與社群交流
近期接觸 React Native 後,開始嘗試跨平台手機應用開發
喜歡前端經常迸出令人驚艷的潮潮東西,還有豐富活躍的社群文化
Released in Sep, 2015 (Android)
Learn Once, Write Anywhere.
class Welcome extends Component {
render() {
return (
<View>
<Text>
Welcome
</Text>
</View>
);
}
}
class Welcome extends Component {
render() {
return (
<div>
<span>
Welcome!
</span>
</div>
);
}
}
Visual DOM
Web
Component
DOM manipulation by ReactJS
Visual DOM
Native
Object
React Native
ReactJS
Web
Component
?
iOS
Android
Windows
iOS 可參考: React Native 初心者攻略
$ react-native init FirstRNApp
$ npm install react-native-cli -g
$ react-native run-android
$ npm start
編輯 index.android.js 開始開發
快捷鍵:連按兩下R
從 packager server 拿新的 JS 重新渲染
偵測檔案更動自動 Reload
保留狀態更新
Debug in Chrome
Debugger UI:
http://localhost:8081/debugger-ui
創建 UI 最基本的組件,類似 div
Container ,支援 Flexbox 佈局
用兩個 TextInput 分別讓使用者輸入身高, 體重
輸入完成後按按鈕進行計算,用 Text 顯示 BMI 值
一個 TextInput 讓使用者輸入 pokemon index (001~151)
輸入完後點按鈕顯示該神奇寶貝圖片
神奇寶貝圖片url:https://pokeadvisor.com/img/mon/123.png
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
});
駝峰式的 CSS 屬性名稱
<View style={styles.container} />
<View style={[styles.container, style.style2]} />
與 Object.assign 相同,若有衝突,右邊優先
<View style={[
styles.base,
this.state.active && styles.active
]} />
排版方向,預設是 column
flexDirection 方向排版比例
<View style={styles.container}>
<View style={{
flex: 2,
backgroundColor: 'lightblue'
}}>
<Text>View1</Text>
</View>
<View style={{
flex: 1,
backgroundColor: 'lightgreen'
}} >
<Text>View2</Text>
</View>
</View>
2
1
2
1
1
說明 | value | |
---|---|---|
justifyContent | flexDirection方向的子元素排版 | flex-start, center, flex-end, space-around, space-between |
alignItems | 垂直 flexDirection 方向的子元素排版 | flex-start, center, flex-end, stretch |
$ rnpm link
# 若沒有安裝過 rnpm ,請先安裝
$ npm install rnpm -g
$ npm install packageName
const response = await fetch(searchApi, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});