【0.46】React Native 中文更新日志

  • 本文為 Marno 原創(chuàng),轉(zhuǎn)載必須保留出處!
  • 公眾號【 aMarno 】,關(guān)注后回復(fù) RN 加入交流群
  • React Native 優(yōu)秀開源項目大全:http://www.marno.cn

一、通用


重大變化

  • 更好的 TextInput: contentSize 這個屬性從 TextInput.onChange event 中移除了

現(xiàn)在 contentSize 的屬性已經(jīng)被徹底移除了,如果有用到該功能的可以使用 onContentSizeChange 代替。

  • 現(xiàn)在如果在 <Image> 標(biāo)簽中嵌套其他組件現(xiàn)在會報黃盒警告

之所以這樣做是因為嵌套了其他組件后,會導(dǎo)致 <Image> 組件的尺寸變得不可控,如果非要這樣的話,可以考慮使用 <ImageBackground> 組件來代替。而且之前因為這個特性,必須得給 <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 尺寸的計算和布局
  • 修復(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
  • 強制將 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 后某些真機不回調(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è)備上運行”“集成到現(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ù)處理機制
  • 添加缺失的依賴庫:Add missing dep
  • 添加基礎(chǔ)的 top-level 集成測試
  • 添加 CLI 命令 --dev,可以直接在命令行中切換項目的環(huán)境
  • ResolutionRequest: factor error handling in resolution
  • 運行 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 的支持(上拉加載動畫)
  • 介紹移動屏幕焦點的 API 的使用(VoiceOver 相關(guān))
  • 支持 Animated.loop
  • 改進(jìn) z-index 屬性在 iOS 上的實現(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容