Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
React Native
Search
Sing Jie Lee
April 22, 2016
Technology
95
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React Native
Sing Jie Lee
April 22, 2016
More Decks by Sing Jie Lee
See All by Sing Jie Lee
Infocomm Media Youth Festival 2016 - Career Talk
singjie
0
62
Sprite Kit
singjie
0
65
SiriKit
singjie
0
210
Arduino
singjie
0
48
Software Engineering
singjie
0
63
Advanced Core Data
singjie
0
47
Amazon Echo and Home Integration
singjie
0
110
CS3216 Garena Project X
singjie
0
59
Life
singjie
0
46
Other Decks in Technology
See All in Technology
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.4k
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.3k
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
3
620
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
3
560
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
280
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
220
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
3
920
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
事業課題から技術的負債に向き合う
sansantech
PRO
2
2k
AI coding 整合正規方法
philipz
0
350
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Product Roadmaps are Hard
iamctodd
55
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Fireside Chat
paigeccino
43
4k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Amusing Abliteration
ianozsvald
1
310
Writing Fast Ruby
sferik
630
63k
The SEO Collaboration Effect
kristinabergwall1
1
570
The Cost Of JavaScript in 2023
addyosmani
55
10k
Transcript
REACT NATIVE LEE SING JIE
CREATED BY FACEBOOK
– https://facebook.github.io/react-native/ “The focus of React Native is on developer
efficiency across all the platforms you care about — learn once, write anywhere.”
PROBLEMS WITH NATIVE • Slow development cycle • Slow deployment
cycle • Different API for same thing • Separate platform teams
WEB / CROSS-PLATFORM • Poor Performance • Non-Native Feel •
Limited feature support • Hackish
None
None
REACT NATIVE • Slow development cycle • Slow deployment cycle
• Different API for same thing • Separate platform teams • Instant Reload • OTA Updates • Common APIs • Shared Skill set
ADVANTAGES • CMD+R • Javascript! Learn once, write anywhere •
Functional UI • Flexbox layout • Highly extensible
JAVASCRIPT import React, { AppRegistry, Component, StyleSheet, Text, View }
from 'react-native'; class EmmaLee extends Component { render() { return ( React.createElement(Text, {style: styles.welcome}, “Welcome to React Native!”) ); } } var styles = StyleSheet.create({ welcome: { fontSize: 30,textAlign: ‘center’ } }); AppRegistry.registerComponent('EmmaLee', () => EmmaLee);
JSX import React, { AppRegistry, Component, StyleSheet, Text, View }
from 'react-native'; class EmmaLee extends Component { render() { return ( <Text style={styles.welcome}> Welcome to React Native! </Text> ); } } var styles = StyleSheet.create({ welcome: { fontSize: 30,textAlign: ‘center’ } }); AppRegistry.registerComponent('EmmaLee', () => EmmaLee);
ASYNC EXECUTION JavaScript Thread Main Thread Shadow Thread Cache Thread
ASYNC EXECUTION
FLEXBOX LAYOUT • flexDirection • justifyContent • alignItems • flex
• flexWrap
FUNCTIONAL UI import React, { AppRegistry, Component, StyleSheet, Text, View
} from 'react-native'; class EmmaLee extends Component { render() { return ( <Text style={styles.welcome}> Welcome to React Native! </Text> ); } } var styles = StyleSheet.create({ welcome: { fontSize: 30,textAlign: ‘center’ } }); AppRegistry.registerComponent('EmmaLee', () => EmmaLee);
FUNCTIONAL UI this.state this.state.text2 this.state.text1 render() { return ( <View
style={styles.container}> <Text style={styles.text}>{this.state.text1}</Text> <Image style={styles.image} source={{uri: "some_url"}}/> <Text style={styles.text}>{this.state.text2}</Text> </View> ); }
FUNCTIONAL UI this.state I You constructor(props) { super(props); this.state =
{ text1: "I", text2: "You", }; }
FUNCTIONAL UI this.state onSomeEvent() { this.setState({ text1: "Vincent Nguyen", text2:
"Omer Iqbal" }) } Vincent Nguyen Omer Iqbal
LET'S BUILD AN APP
EXTENSIBLE • Native UI Components • Native Modules
NATIVE UI COMPONENTS // RCTMapManager.m #import <MapKit/MapKit.h> #import "RCTViewManager.h" @interface
RCTMapManager : RCTViewManager @end @implementation RCTMapManager RCT_EXPORT_MODULE() - (UIView *)view { return [[MKMapView alloc] init]; } @end import { requireNativeComponent } from 'react-native'; module.exports = requireNativeComponent('RCTMap', null); Objective-C Javascript
NATIVE UI COMPONENTS
DEMO
NATIVE MODULES // CalendarManager.h #import "RCTBridgeModule.h" @interface CalendarManager : NSObject
<RCTBridgeModule> @end // CalendarManager.m @implementation CalendarManager RCT_EXPORT_MODULE(); RCT_EXPORT_METHOD(addEvent:(NSString *)name location:(NSString *)location) { NSLog(@"Pretending to create an event %@ at %@", name, location); } @end import { NativeModules } from 'react-native'; var CalendarManager = NativeModules.CalendarManager; CalendarManager.addEvent('Birthday Party', '4 Privet Drive, Surrey'); Objective-C Javascript
NATIVE MODULES
DEMO
OTA UPDATE "react-native bundle --entry-file index.ios.js -- bundle-output ios.bundle --dev
false"
DEMO
–Chai Haoqiang “I took only two hours to do Shopee
page using React Native”
None
QUESTIONS?
Credits: - http://www.slideshare.net/tlv-ios-dev/pieter-de-baets-an-introduction-to-react-native - https://facebook.github.io/react-native/docs - https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties