- 本文為 Marno 原創(chuàng)黎茎,轉(zhuǎn)載必須保留出處肩民!
- 公眾號【 aMarno 】辣之,關(guān)注后回復(fù) RN 加入交流群
- React Native 優(yōu)秀開源項(xiàng)目大全:http://www.marno.cn
一战得、通用
重大變化
- 更好的 TextInput: contentSize 這個屬性從 TextInput.onChange event 中移除了
現(xiàn)在 contentSize 的屬性已經(jīng)被徹底移除了喷斋,如果有用到該功能的可以使用 onContentSizeChange 代替控嗜。
- 現(xiàn)在如果在 <Image> 標(biāo)簽中嵌套其他組件現(xiàn)在會報黃盒警告
之所以這樣做是因?yàn)榍短琢似渌M件后茧彤,會導(dǎo)致 <Image> 組件的尺寸變得不可控,如果非要這樣的話疆栏,可以考慮使用 <ImageBackground> 組件來代替曾掂。而且之前因?yàn)檫@個特性惫谤,必須得給 <Image> 設(shè)置明確的大小,但是現(xiàn)在它可以根據(jù) bitmap 來自動推斷尺寸了珠洗。
修復(fù) Bug
- 修復(fù)索引 RAM bundles 的代碼生成
- 修復(fù)當(dāng)存在多個 manifests 文件時
react-native link
命令出現(xiàn)的問題 - 修復(fù) stickySectionHeader 重新渲染的問題
- 修復(fù) KeyboardAvoidingView 組件的問題
- Fix Native Animated - Call x.__makeNative before super.__makeNative
- 修復(fù) TextInput 的 padding 和 border 尺寸的計(jì)算和布局
- 修復(fù)當(dāng)存在多個 section 時 ListViewMock 唯一 key 的錯誤
新特性
- Native Animated: 防止設(shè)置了
useNativeDriver: true
屬性后溜歪,該動畫被系統(tǒng)優(yōu)化
// 該特性解決了如下代碼會報錯的問題
// translateY 是設(shè)置了 `useNativeDriver: true` 的動畫
<Animated.View style={{flex: 1, transform: [{ translateY }]}} />
- 修復(fù)當(dāng) node<4 時在 react-native-cli 中報錯(const -> var)
- 給 View 添加多個屬性(大部分是關(guān)于輔助操作的)
- 在 FlatList 上使用 flexWrap 屬性會報警告
- Add error message when calling sync methods from the Chrome debugger
- 添加提示消息來提醒開發(fā)者在調(diào)試時要開啟 WIFI
- 介紹使用 <ImageBackground> 來代替 <Image> 來進(jìn)行嵌套組件的展示
- 每次 batch 只調(diào)用一次 callImmediates 方法
- 當(dāng)需要獲取定位信息時自動進(jìn)行定位權(quán)限的請求
- 暴露 requestAuthorization 方法 (用于請求定位權(quán)限)
- 當(dāng) SectionList 中某個 section 里沒有數(shù)據(jù)的時候也進(jìn)行 section footer 的渲染
- ART: 如果給 fontWeight 設(shè)置了 integer 值,則自動調(diào)用 toString 方法對屬性進(jìn)行轉(zhuǎn)換
- 將 XMLHttpRequest 的 withCredentials 屬性的默認(rèn)值改為 "true"
- CLI: Adding shebang to setup_env.sh script
- 強(qiáng)制將 TextInput 中的
alignSelf: stretch
屬性刪除 - 單行 <TextInput> 有了固定的高度(占位字符的高度)
- 統(tǒng)一 <TextInput> 在多行輸入和單行輸入的布局邏輯
- VirtualizedList: 在 _updateViewableItems 方法中傳入 props.data 代替直接傳入 props
- 更新
inquirer
依賴庫版本(0.12.0->3.0.6)以更好的支持交互式命令行提示 - 允許 module 通過 BatchedBridge 進(jìn)行懶注冊
- 改進(jìn) View 中部分 props 和 style 相關(guān)的內(nèi)容
- 在 requestIdleCallback 中添加
options
屬性许蓖,解決在開啟Debug JS Remotely
后某些真機(jī)不回調(diào)該方法的問題 - 添加在 JSContext 線程之外的其他線程進(jìn)行 GC 的能力
- 在主線程創(chuàng)建 JS executor 和 context
文檔 Doc
- 更新使用文檔中的 Getting Started蝴猪,新增了 CRNA 的使用介紹
CRNA 全名叫 creat-react-native-app,可以幫助我們免搭建 Naitve 開發(fā)環(huán)境直接進(jìn)行 RN 應(yīng)用的開發(fā)膊爪,具體使用方法可以看我公眾號里另一篇文章《
更快速的 React Native 應(yīng)用開發(fā)之道《React Native 高效開發(fā)》之 create-react-native-app》
- 文檔多處進(jìn)行改進(jìn)(主要關(guān)于“在設(shè)備上運(yùn)行”和“集成到現(xiàn)有 App”部分的文檔)
- 在 Getting Started自阱、Debugging、Running on Device 幾個部分的文檔進(jìn)行了一些語序和語法的調(diào)整
- 闡明不同導(dǎo)航庫之間的利弊
- 在 ListView 相關(guān)文檔中推薦使用 FlatList, SectionList 代替現(xiàn)有的 ListView
- 修復(fù)一些語法 / 語句結(jié)構(gòu)的錯誤
Yoga
- 修正 print 邊緣值
- 修復(fù)在絕對布局中使用 right 和 bottom 屬性時的布局問題
- 修復(fù)在設(shè)置了 flexWrap 的容器中使用絕對定位進(jìn)行布局時的問題
- Parse YogaValue from string. inverse of toString()
- Fixing potential measure call with negative size value
- 改變了 pointScaleFactor 的使用米酬,以避免累積錯誤
- 用 ellipsizeMode 代替了 lineBreakMode
Packager
- 修復(fù) OSS 集成測試Fix integration test for OSS
- 使用 buildID 來取代文件路徑在 reporting 中的標(biāo)識作用
- ResolutionRequest: 抽取 FileNameResolver 類
- Terminal: 移除全局狀態(tài)
- AssetServer: 移除 fs 超時
- 添加 "node" 環(huán)境到 packager .eslintrc
- 為 buck worker 添加預(yù)處理機(jī)制
- 添加缺失的依賴庫:Add missing dep
- 添加基礎(chǔ)的 top-level 集成測試
- 添加 CLI 命令
--dev
沛豌,可以直接在命令行中切換項(xiàng)目的環(huán)境 - ResolutionRequest: factor error handling in resolution
- 運(yùn)行 packager.sh 使用 '.' 代替 'source' 來兼容不同操作電腦系統(tǒng)
- ResolutionRequest: 處理 empty module 時的特殊情況
- DependencyGraph: 格式化代碼
- ResolutionRequest: use _loadAsFile from _loadAsDir
- ResolutionRequest: 重構(gòu) _loadAsDir 和依賴關(guān)系
- 將 packager 啟動腳本從
packager/
目錄移到scripts/
目錄 - TransformCache: 在該類外部獲取 root path 的選擇
- 將 packager 的核心邏輯代碼從 local-cli 移到 packager 目錄
- TransformCaching: API 提供方法可以選擇緩存路徑
- 升級 jest-haste-map 版本(19.0.0 --> 20.0.4)
- Module: 擺脫各種 callbacks
- 不再在 packager/ folder 內(nèi)部引用 setupBabel
- AsyncTaskGroup: @flow
- Server: 更加一致的錯誤處理方式
- 打包時按需分配構(gòu)建模塊
- 將 sourceMappingURL 從塊注釋改為行注釋
- 創(chuàng)建 OutputFn 可以構(gòu)建索引的 RAM bundles
- 簡化文件類型:map 可為空但不是可選的
- ModuleTransportLike 的協(xié)變屬性
- 在 ModuleTransportLike 中只使用 $ReadOnlyArray
- 在 DependencyGraph-test 中正確的模擬路徑
- 從主入口處刪除對 setupBabel 的調(diào)用
二、iOS
修復(fù) Bug
- Native Animations - 修復(fù)極小可能出現(xiàn)的動畫恢復(fù)默認(rèn)值的問題
- 修復(fù)在 ModuleData 類中 讀 / 寫
_instance
變量時的數(shù)據(jù)競賽
新特性
- 在 iOS 版本的 UIExplorer 中添加 ART 庫赃额,以及相關(guān)的示例和測試
- 在 RCTLinkingManager 中新增推薦方法加派,代替 Apple 在 iOS9 中已標(biāo)記為過期的方法
- 在 iOS 上添加對 flashScrollIndicators 的支持(上拉加載動畫)
- 介紹移動屏幕焦點(diǎn)的 API 的使用(VoiceOver 相關(guān))
- 支持 Animated.loop
- 改進(jìn) z-index 屬性在 iOS 上的實(shí)現(xiàn)方式
- 幫助 VoiceOver 提高對多行本文模式下的 TextInputs 的識別能力
- 提供獲取 iOS 推送消息 category 屬性的方法
- 在 Podfile 中添加關(guān)于 DevSupport 的備注
- 最小化 UIViewOperationQueue 鎖定時間
- 在 XMLHttpRequest 和 Websocket 請求的頭文件中添加 cookie
- 使用更穩(wěn)定的 drawViewHierarchyInRect 代替 renderInContext
- 只有設(shè)置了 soundName 后才會在本地推送的通知送達(dá)時播放聲音
如果需要發(fā)送靜默的本地通知,可以不設(shè)置 soundName 屬性
- 忽略 UIWebView 中提示的 "Frame load interrupted" 錯誤
- 修復(fù)在編譯時關(guān)于無用變量的警告
三爬早、Android
修復(fù) Bug
- 修復(fù)在 AccessibilityInfoModule 中的內(nèi)存泄露
- 修復(fù) Android 中 <TextInput> 組件的屬性 onContentSizeChange 很少被回調(diào)的問題哼丈,基本上只在初始化后調(diào)用一次启妹。
- 修復(fù) ImageLoader Mock 時報錯的問題
- 修復(fù)內(nèi)存泄露問題
當(dāng) ReactInstanceManager 調(diào)用 destroy 方法時ViewManagersPropertyCache筛严、 ViewManagerPropertyUpdater 中靜態(tài)變量沒有及時釋放,會導(dǎo)致內(nèi)存泄露
- 修復(fù)由可重復(fù)加載的 executor 引起的競爭條件
- 在一般的 border 示例中避免使用 path
新特性
- 在 UIManager 中添加 viewIsDescendantOf 饶米,檢測某個組件是否繼承自其他組件
- 將缺少的 Java 文件添加到 RN fbjni sync
- 允許 WebView 處理 about:blank
- 修改 CatalystInstanceImpl.java 中的拼寫錯誤
- 在 ShakeDetector 和 DevSupportManagerImpl 可以設(shè)置觸發(fā)抖動處理程序的最小抖動次數(shù)(默認(rèn)為 1 )
- 在 OSS 構(gòu)建時不包括 JNI dep
- 給 WebView 添加屬性以支持第三方的 cookies
- 如果當(dāng)先已經(jīng)在 UI 線程就不繼續(xù)向該線程發(fā)送 UI 操作
- 移動 {HashMap,ArrayList} 到 Readable{Map,Array}
- 移除 ReactImageView.RoundedCornerPostprocessor 中的無用代碼
- 在測量時不要阻止 attaching ReactRootView