SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
REACT NATIVE /
REDUX 簡單 也 不簡單
SAM LEE
Sam Lee
: FED
: / 

react-native init AwesomeProject
React 是什麼?
React JS
VDOM
WEB
COMPONENT
React Native 又是什麼?
React Native
VDOM NATIVE

OBJECT
iOS
Android
Windows
Tizen
OSX
QT
VR
React Native 的原理是?
!!!!!!!
ReactJS
Native

Function
JavascriptCore
Javascript Bridge
RCTBridge
Obj-C bridge
- 2015/10 - React Native v0.11 ( Support Android)
- 2016/04 in Facebook F8 conference , Microsoft and
Samsung have committed to 

bringing React Native to Windows 10 and Tizen
- 2016/10/06 React VR announcement!
- 2016/10/ React Native v0.35 

2 1 release
什麼是 Redux ?
Object: Action: Object:
State: State:
React Native Redux
+
Mobile 常⾒的 UI 結構
Redux Provider
Navigator
AUTH NAVIGATOR
MAIN Navigator
SUB NAVIGATOR
SUB NAVIGATOR
SUB NAVIGATOR
NAVIGATOR MAIN VIEW
SUB
NAVIGATOR
COMPONENT
基本架構
Redux 很⽅便
但不能濫⽤ Connect
NAVIGATOR MAIN VIEW
SUB
NAVIGATOR
COMPONENT
Connect with Store Connect with Store
Connect with Store
Connect with Store
資料的傳遞
NAVIGATOR MAIN VIEW
SUB
NAVIGATOR
COMPONENT
Connect with Store Connect with Store
Connect with Store
Connect with Store
Update Update
Update
Update
Dispatch Action
Dispatch Action
Dispatch ActionDispatch Action
資料的傳遞
NAVIGATOR MAIN VIEW
SUB
NAVIGATOR
COMPONENT
Connect with Store
props
props
Connect with Store
Update Update
Dispatch Action
資料的傳遞
Dispatch Action
Update
Update
專案最後都會搞⼤, 如果⼀開始

⼿法單純, 將來還有機會控制, 

反之, 則必然悲劇收場 .
By Jeremy Lu
在 React Native

經過, 路過, 也不會錯過的
坑
不必要的 Render
坑
我好像...舉不起來
看似 ! 簡單的動作....
!! ( )
從 Code 來看就是這樣⼦
ShouldComponentUpdate
ShouldComponentUpdate
ShouldComponentUpdate
很重要 !!!
Deep equal
or
Immutable
STORE
VIEW
State
Deep Equal:
1. Store 發⽣變化
2. State change
3. Connect 的 Component 觸發 ReRender
4. Deep Equal 判斷 State 內容是否相同
5. ⼀樣就不更新 (ShouldComponentUpdate 

false)
STORE
VIEW
State
Immutable:
1. Store 發⽣變化
2. State change
3. Connect 的 Component 觸發 Refresh
4. 利⽤ === 判斷指標是否相同
5. ⼀樣就不更新 (ShouldComponentUpdate 

false)
簡單來說
Deep Equal ⽤的是⼤腦
Immutable ⽤的是

直覺
ListView
坑
我...拿不動了
問題點:
ListView 的實現⽅式
- React Native - Scroll View
- Native - Table View
不同點:
- React Native - Scroll View

(不會回收 ! 不會! 不會 !)
- Native - Table View

(⾃動回收機制)
78分 不能再低了
解法:
⾯對它, 回收它
ListView
空⼼

VIEW
有內涵
的VIEW
空⼼

VIEW
有內涵
的VIEW
有內涵
的VIEW
可視範圍 範圍外範圍外
https://github.com/sghiassy/react-native-sglistview
Navigator
坑
Navigator的原理是

Stack!

Stack!

Stack!
注意 Navigator Stack 的狀態
⼀直 Push View

就會⼀直變多

直到無法控制
(此時如果加上 Store data update)

就 GG 了
87分

不能再⾼
管理好 Stack
1. Main View 間的跳轉 直接切換
2. Main View -> Sub View 使⽤ Push
3. 轉/跳回 Root Page 時 清空 Stack
React Native

更新太快!! (好? 壞?)
坑
DEMO啦
React Native

Z > B
React Native Z > B
1. 不⽤怕沒有 Solution (上⾯⼀群神⼈在幫你)
2. 更新很快, 這次沒有的 Feature 下次可能就有了
3. 刻 UI 不⽤等 !!! (省太多時間了)
4. ⼀套 Code 同時開發 2 個平台 (Reuse rate ⾼達 80%)
5. 80%的問題都是 1個 solution for 2 個平台

(當然 bug 也是⼀次 2 個平台...)
當然最⼤的 Z 是....
FED is not only for WEB, 

but also for ALL TERMINALS !!!
發問吧!
我可以休息了

Weitere ähnliche Inhalte

Was ist angesagt?

2010.09.21專題報告
2010.09.21專題報告2010.09.21專題報告
2010.09.21專題報告
黃振庭
 

Was ist angesagt? (20)

導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
 
Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课
 
Github Actions
Github ActionsGithub Actions
Github Actions
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 Startup
 
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
 
react native by letv
react native by letvreact native by letv
react native by letv
 
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
 
Spring boot 简介
Spring boot 简介Spring boot 简介
Spring boot 简介
 
行動技術開發概論
行動技術開發概論行動技術開發概論
行動技術開發概論
 
Beta testing with CI
Beta testing with CIBeta testing with CI
Beta testing with CI
 
Angular 5 全新功能探索 @ JSDC2017
Angular 5 全新功能探索 @ JSDC2017Angular 5 全新功能探索 @ JSDC2017
Angular 5 全新功能探索 @ JSDC2017
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得
 
CocoaPods private repo
CocoaPods private repoCocoaPods private repo
CocoaPods private repo
 
React native 開發快速上手 20171106
React native 開發快速上手 20171106React native 開發快速上手 20171106
React native 開發快速上手 20171106
 
DevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline ToolsDevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline Tools
 
20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
API Token 入門
API Token 入門API Token 入門
API Token 入門
 
2010.09.21專題報告
2010.09.21專題報告2010.09.21專題報告
2010.09.21專題報告
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
 

Andere mochten auch

Backbonejs
BackbonejsBackbonejs
Backbonejs
Sam Lee
 
Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計
艾鍗科技
 

Andere mochten auch (20)

Backbonejs
BackbonejsBackbonejs
Backbonejs
 
What is FED
What is FEDWhat is FED
What is FED
 
Modern web2016 reactnativeweb
Modern web2016 reactnativeweb Modern web2016 reactnativeweb
Modern web2016 reactnativeweb
 
Trend Micro Web's Scaffolding tool
Trend Micro Web's Scaffolding toolTrend Micro Web's Scaffolding tool
Trend Micro Web's Scaffolding tool
 
Ti cs
Ti csTi cs
Ti cs
 
Xebicon2016 - React Native & Redux
Xebicon2016 - React Native & ReduxXebicon2016 - React Native & Redux
Xebicon2016 - React Native & Redux
 
Presentation1
Presentation1Presentation1
Presentation1
 
XebiCon'16 : React Native et Redux, une complémentarité hors du commun. Par ...
XebiCon'16 : React Native et Redux, une complémentarité hors du commun.  Par ...XebiCon'16 : React Native et Redux, une complémentarité hors du commun.  Par ...
XebiCon'16 : React Native et Redux, une complémentarité hors du commun. Par ...
 
React Native for Web
React Native for WebReact Native for Web
React Native for Web
 
Redux with React Native
Redux with React NativeRedux with React Native
Redux with React Native
 
Redux data flow with angular 2
Redux data flow with angular 2Redux data flow with angular 2
Redux data flow with angular 2
 
React native sharing
React native sharingReact native sharing
React native sharing
 
React Native: Developing an app similar to Uber in JavaScript
React Native: Developing an app similar to Uber in JavaScriptReact Native: Developing an app similar to Uber in JavaScript
React Native: Developing an app similar to Uber in JavaScript
 
React Redux React Native
React Redux React NativeReact Redux React Native
React Redux React Native
 
Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計
 
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScriptReact Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
 
Startup Pitching and Mobile App Startup
Startup Pitching and Mobile App StartupStartup Pitching and Mobile App Startup
Startup Pitching and Mobile App Startup
 
Mvp in practice
Mvp in practiceMvp in practice
Mvp in practice
 
[React-Native Tutorial] Map
[React-Native Tutorial] Map[React-Native Tutorial] Map
[React-Native Tutorial] Map
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 

Ähnlich wie React native redux_sharing

D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
leneli
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
Wade Huang
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
yangdj
 
Exodus重构和向apollo迁移
Exodus重构和向apollo迁移Exodus重构和向apollo迁移
Exodus重构和向apollo迁移
wang hongjiang
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
yiditushe
 

Ähnlich wie React native redux_sharing (20)

React Native on Android
React Native on AndroidReact Native on Android
React Native on Android
 
Thinking in React by Deot
Thinking in React by Deot Thinking in React by Deot
Thinking in React by Deot
 
react-zh-hant.pdf
react-zh-hant.pdfreact-zh-hant.pdf
react-zh-hant.pdf
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
10 Things to Make API Users Like You
10 Things to Make API Users Like You10 Things to Make API Users Like You
10 Things to Make API Users Like You
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
React + mobx分享(黄英杰)
React + mobx分享(黄英杰)React + mobx分享(黄英杰)
React + mobx分享(黄英杰)
 
React Native & V2HOT
React Native & V2HOTReact Native & V2HOT
React Native & V2HOT
 
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?
 
基于Ivy ant的java构建初探
基于Ivy ant的java构建初探基于Ivy ant的java构建初探
基于Ivy ant的java构建初探
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18
 
twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構
 
程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
 
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
 
Exodus重构和向apollo迁移
Exodus重构和向apollo迁移Exodus重构和向apollo迁移
Exodus重构和向apollo迁移
 
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 

React native redux_sharing