鄭重聲明:以前個人一些文章,被某些培訓機構無情地、批量地、搬運到了他們各渠道的帳號中,而且添加了不少營銷性質的內容,會讓不少讀者覺得是我發的。因此特地在此特別聲明,但願讀者朋友們不要被坑了。我只會在個人公衆號 Marno 和掘金髮布文章,偶爾也會發知乎。並且個人文章禁止任何形式的未受權轉載。react
若是你們有看到抄襲的能夠立刻通知我,我必定會拿起法律武器,維護自身!以前沒太在乎,想着本身讀者不算多,可是最近看到有公衆號博主所以被起訴了的,因此以爲仍是有必要注意一下。git
昨天 React Native 團隊在社區 github 倉庫的 Issues 裏發了一個話題,《What do you dislike about React Native?》,中文就是說,React Native 如今還有哪些地方讓你不滿意的?官方搞這個話題,難道是爲了幫助被 RN 折騰已久的人們排解一下負面情緒麼?哈哈~github
我心想讓人誇不容易,可是讓人吐槽還不容易麼?原本覺得這個話題會被瞬間攻陷,但實際仍是有點意外,截至我寫文章的時候也只有 13 個回覆而已。固然,好像還有些回覆是被官方秒刪了編程
我把這些回覆都看了一遍,有一些確實是在使用 RN 的過程當中,讓人以爲比較惱火的地方。下面我隨便挑了幾個我以爲還不錯回覆翻譯一下,不知道這些問題是否也在一樣困擾着你呢?歡迎你們在下方留言討論。react-native
準備好了麼?RN 非官方皇-家翻譯來啦~bash
原文: markdown
在用了 Typescript 後,我必須常常重載個人應用。當使用實時重載時,應用確實重載了,可是卻顯示紅屏報錯了,提示
Unable to find module for EventDispatche
。這個狀況已經出現有一段時間了。實時重載的問題,再加上熱重載也常常不穩定,就會讓人在開發時候以爲很惱火。這也會致使 Xcode 打印不少沒用的日誌,還有不少其餘相關的相似問題。app
Marno:編程語言
確實是這樣的,實時重載和熱重載常常會致使一些問題,紅屏也就算了,打不了手動 reload 下,可時不時的就讓 packager 掛了,就很是難受了。oop
Marno:
這個哥們就顯得有點激動了,來了個四連發,看來是「受迫害」已久了,哈哈哈~隔着屏幕都能感受到他在使用 RN 時的心情。他的這幾個評論我就不一一翻譯了,不過感受他應該是不怎麼懂原生開發的,因此會有這些問題。
可能對於不少 Web 轉 RN 的人來講都會遇到相似的問題,好比原生項目的配置之類的,但這對於原生轉 RN 的人來講又都不是問題,因此可能官方並無太在乎這點,這對於一些新手來講也顯得有點不太友好。
不過我以爲這些問題並沒關係,不去完善也沒有什麼問題,當務之急仍是把更多精力集中到發佈 v1.0 版本上。
原文:
在啓動 packager 以後,我但願能夠經過命令行來控制 App 的運行。好比能夠經過命令行控制實時重載,開啓 debugger 之類的。
這些功能會提高開發體驗,如今這種經過晃動手機或者按快捷鍵打開來 Dev Menu 的方式是很是有爭議的。
可用的命令應該在你運行 react-native start 以後就提出出來,好比:
Metr Bundler ready. Loading dependency graph, done. To hot reload press "r" To restart the app press "R" To toggle debugging mode press "d" 複製代碼
Marno:
這個是目前被點贊最多的回覆了,簡而言之,就是他但願能夠經過命令行控制應用重載、打開調試這些。我也以爲如今這種經過晃動手機打開 Dev Menu 的方式特別麻煩,有時候手都快晃斷了,菜單還沒打開,或者晃了半天菜單打開了,可一停下的時候一不當心碰到屏幕就給弄關上了。並且老這麼在辦公室晃動,也有點太…
因此我是很贊同他的想法的。雖然不知道能不能經過命令行實現,可是至少能夠提供個設置項,容許把經常使用的幾個操做懸浮在屏幕上啊。
原文:
認真臉.jpg,如今這種經過 expo 初始化和運行項目的方式一點都不酷,不要誤解我,並非說我不喜歡 Expo,而是它太過於沉重了 ,不管你的項目多簡單,用了 Expo 後打個包都要 20M 起步了。
Marno:
這位兄弟就有點「過度」了,誰讓你必須用 Expo 了呢?以爲太佔體積能夠不用啊!不過話說回來這個問題也確實存在,也一度困擾了我好久,那段時間想把項目精簡一下,因此搜了下有沒有精簡Expo 的辦法,後來仍是官方論壇找到了 Expo 官方回覆,說目前沒有任何辦法精簡的。
不過好在他也認識到這個問題了,因此從 SDK32 開始就在重構了。從最近發佈的 SDK33 來看,變化還挺大的,把不少非核心的功能移到了單獨的倉庫中,引用的時候就不能直接 import XXX form 'expo' 了,要經過指定的模塊引入,這麼作就是爲了減少體積的。
原文:
我認爲這樣作有利於不少 JS 開發者(至少對我而言)快速的瀏覽 iOS 的原生代碼。由於比起 Swfit 或者其餘如今化編程語言來講,Objective-C 不太利於閱讀。另外,如今也有不少 iOS 原生項目也在使用 Swift 進行開發了。鼓勵在 RN 中使用 Swfit 可使得調試原生或編寫代碼變得相對簡單。
我我的建議 RN:
- 將經過 CLI 生成的 AppDelegate.m, AppDelegate.h 還有 main.m 文件改成用 Swift 實現。像 Flutter 就提供了能夠選擇使用 OC,Java 或者 Swift,Kotlin 來初始化項目的功能。
- 鼓勵更多的社區倉庫使用 Swift 寫 iOS
Marno:
贊同,贊同,贊
快使用 Swift,哼哼哈!
Swift,一時用一時爽,一直用一直爽!
原文:
如今的 React Native 沒有內置一個合適的原生 navigation 庫,應該搞一個可使用 native 線程顯示頁面切換動畫的導航器,而不是必須經過阻塞 js 線程。
Marno:
哈哈哈~天下苦 navigation 久已,不過如今已經好多了,基本被 react-navigation 一統天下了。剛開始的 RN 是內置了導航器的,並且搞了還搞了不止一個方案,可是效果都不怎麼理想。與此同時社區出現了一些好用的導航器,尤爲以 react-nativetion 爲首
因此後來官方也就放棄掙扎了,心想既然社區作的好,那就用社區的吧,這才慢慢把導航器從內置代碼中移除了。這哥們兒應該是用上 RN 沒多久,因此才發出了這樣的吐槽吧。並且交給社區維護,能夠快速迭代,快速發版。這要是內置的出了bug,那得等多久纔能有官方修復啊!
一不當心就寫了 3000 字,太長了也沒人看,因此還有一些其餘回覆,我就不挨個翻譯了。若是感興趣的話,能夠去原文看下,固然也能夠去回覆一些你以爲不喜歡的地方,至於官方會不會改呢,雨女無瓜!哈哈哈~也歡迎你們在下方留言。
討論地址: github.com/react-nativ…