Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React, ComponentKit and React Native
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Paul Taykalo
July 06, 2015
Programming
2
420
React, ComponentKit and React Native
History of React, ComponentKit, React Native, when should I use it, how it works under the hood
Paul Taykalo
July 06, 2015
Tweet
Share
More Decks by Paul Taykalo
See All by Paul Taykalo
There's no virus on Mac
paultaykalo
0
310
On guard of surce code
paultaykalo
0
170
Source Code as Input
paultaykalo
0
95
Reactive Programming Workshop
paultaykalo
0
120
Why we are (not) writing tests in iOS
paultaykalo
1
260
Lost in maintenance in Swift
paultaykalo
0
480
Как в короткое время силами существующей команды без дизайнера выпустить мультиплатформенное приложение
paultaykalo
0
140
Code Generators In Swift (Part 2)
paultaykalo
2
200
Applications that broke... somewhere
paultaykalo
1
85
Other Decks in Programming
See All in Programming
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
PRO
0
180
CSC307 Lecture 11
javiergs
PRO
0
580
Oxlint JS plugins
kazupon
1
1.1k
iOSアプリでフロントエンドと仲良くする
ryunakayama
0
110
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
300
個人開発は儲からない - それでも開発開始1ヶ月で300万円売り上げた方法
taishiyade
0
110
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
120
浮動小数の比較について
kishikawakatsumi
0
300
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
790
AI巻き込み型コードレビューのススメ
nealle
2
2.1k
Oxlintはいいぞ
yug1224
5
1.4k
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
320
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
90
Designing Powerful Visuals for Engaging Learning
tmiket
0
250
Darren the Foodie - Storyboard
khoart
PRO
2
2.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
A designer walks into a library…
pauljervisheath
210
24k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
450
Tell your own story through comics
letsgokoyo
1
820
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Transcript
ComponentKit and React Native Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 1
What is it about? » React.js, ComponentKit, React native »
Native vs Javascript » UI, do you speak it? Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 2
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 3
React.js Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 4
React.js Simple “Simply express how your app should look at
any given point in time, and React will automatically manage all UI updates when your underlying data changes.” Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 5
React.js Declarative “When the data changes, React conceptually hits the
"refresh" button, and knows to only update the changed parts.” Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 6
React.js Implementation » Just the UI » Virtual DOM* »
Data Flow Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 7
Few months later... Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 8
Awesome! It works! Let's do it Native Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 9
UIWebView? Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 10
UIWebView? Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 11
PhoneGap + React.js Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 12
Native vs Javascript Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 13
(HTML + JS) vs (UIKit + ObjC) Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 14
Screw IT! Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
15
Let's do it native! Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 16
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 17
ComponentKit Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 18
ComponentKit » UIKit » Components » One-Way DataFlow » ObjectiveC++
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 19
Write once, run everywhere Java, Sun Microsystems Learn once, use
everywhere React, Facebook Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 20
React.js var HelloMessage = React.createClass({ render: function() { return <div>Hello
{this.props.name}</div>; } }); React.render( <HelloMessage name="John" />, document.getElementById('container') ); Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 21
ComponentKit @implementation HelloMessageComponent + (instancetype)newWithName:(NSString*)name { return [super newWithComponent: [CKLabelComponent
newWithLabelAttributes:{ .string = [NSString stringWithFormat:@"Hello %@", @name], } viewAttributes:{} ]; } @end Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 22
Declarative vs Imperative Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 23
Declarative Write what result do you want Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 24
Imperative Write how to get the result Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 25
A bit complex example declarative + (instancetype)newWithStory:(FBStory *)story { return
[super newWithComponent: [FBStackLayoutComponent newWithView:{} size:{} style:{.alignItems = FBStackLayoutAlignItemsStretch} children:{ {[FBHeaderComponent newWithStory:story]}, {[FBMessageComponent newWithStory:story]}, {[FBAttachmentComponent newWithStory:story]}, {[FBLikeBarComponent newWithStory:story]}, }]]; } Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 26
A bit complex example imperative @implementation FBStoryView { FBHeaderView *_headerView;
FBMessageView *_messageView; FBAttachmentView *_attachmentView; FBLikeBarView *_likeBarView; } - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { _headerView = [[FBHeaderView alloc] init]; _messageView = [[FBMessageView alloc] init]; _attachmentView = [[FBAttachmentView alloc] init]; _likeBarView = [[FBLikeBarView alloc] init]; [self addSubview:_headerView]; [self addSubview:_messageView]; [self addSubview:_attachmentView]; [self addSubview:_likeBarView]; } return self; } - (CGSize)sizeThatFits:(CGSize)size { return CGSizeMake(size.width, [_headerView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height + [_messageView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height + [_attachmentView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height + [_likeBarView sizeThatFits:CGSizeMake(size.width, CGFLOAT_MAX)].height); } - (void)layoutSubviews { CGFloat width = [self bounds].size.width; CGFloat y = 0; CGFloat headerHeight = [_headerView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_headerView setFrame:CGRectMake(0, y, width, headerHeight)]; y += headerHeight; CGFloat messageHeight = [_messageView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_messageView setFrame:CGRectMake(0, y, width, messageHeight)]; y += messageHeight; CGFloat attachmentHeight = [_attachmentView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_attachmentView setFrame:CGRectMake(0, y, width, attachmentHeight)]; y += attachmentHeight; CGFloat likeBarHeight = [_likeBarView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)].height; [_likeBarView setFrame:CGRectMake(0, y, width, likeBarHeight)]; y += likeBarHeight; } Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 27
A bit complex example imperative Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 28
Immutability One does not simply mutate component Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 29
StateLess* Components tend to be stateless Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 30
Virtual "DOM" in ComponentKit How to render all stuff that
user written Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 31
Component tree -> (Magic) -> UIKit tree Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 32
Component is not an UIView Not Every Component backed up
with UIView Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 33
ComponentKit Layout Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
34
Autolayout ? Manual Layout? Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 35
Autolayout ? Manual Layout? FlexBox* Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 36
ComponentKit is awesome Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 37
ComponentKit downsides Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
38
ComponentKit downsides » Native (I cannot write for Android) »
I need to compile it each time I change something » I cannot share the code Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 39
Let's back to Javascript Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 40
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 41
React Native Paul Taykalo, ComponentKit and React Native, Stanfy, 2015
42
Oh, I know! Javascript + HTML again? Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 43
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 44
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 45
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 46
React Native Native Code Bridge Javascript Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 47
Nah, It cannot be fast! Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 48
Nah, It cannot be fast! It cannot run faster that
native Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 49
Nah, It renders in UIWebView It's slow! Paul Taykalo, ComponentKit
and React Native, Stanfy, 2015 50
Nah, It renders in UIWebView It's slow! It uses UIKit
for rendering Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 51
Nah, I know Native -> JS communication is one-threaded and
synchronous Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 52
Nah, I know Native -> JS communication is one-threaded and
synchronous React Native uses calls batching React Native is fully asynchronous Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 53
Nah, I know that... Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 54
Stop it! Decide for yourself React Native Playground iOS App
Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 55
React Native Playground iOS App Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 56
React Native Template Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 57
React Native Development Paul Taykalo, ComponentKit and React Native, Stanfy,
2015 58
React Native Development » Live Reload » Debugging Javascript in
Browers » FPS Monitor (Javscrip and UI) » Inspect UI Elements (UIView deubgging) » Profiling » Modules Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 59
Ok, I get it What is there any cons? Paul
Taykalo, ComponentKit and React Native, Stanfy, 2015 60
React Native » Animations » Native Components » Complex gesture
recognizers » Extensive computations » new Paradigm Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 61
Where to start from? Paul Taykalo, ComponentKit and React Native,
Stanfy, 2015 62
Where to start from? » M(V)VM » React.js » ComponentKit
» React Native Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 63
So can Javascript be fast? Paul Taykalo, ComponentKit and React
Native, Stanfy, 2015 64
So can Javascript be fast? It can be fast enough
:) Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 65
Links » https://code.facebook.com/posts/1014532261909640/ react-native-bringing-modern-web-techniques-to- mobile/ » http://www.reactnative.com/ » https://developer.mozilla.org/en-US/docs/Web/ Guide/CSS/Flexible_boxes
» http://www.objc.io/issues/22-scale/facebook/ » https://code.facebook.com/posts/1014532261909640/ Paul Taykalo, ComponentKit and React Native, Stanfy, 2015 66
Links » https://speakerdeck.com/frantic/react-native- under-the-hood » http://www.objc.io/issues/22-scale/facebook/ Paul Taykalo, ComponentKit and
React Native, Stanfy, 2015 67
Component Kit and React Native by Paul Taykalo, Stanfy Paul
Taykalo, ComponentKit and React Native, Stanfy, 2015 68