1. 程式人生 > >React Native基礎&入門幸運28加拿大28原始碼下載網站開發教程:除錯React Native應用的一小步

React Native基礎&入門幸運28加拿大28原始碼下載網站開發教程:除錯React Native應用的一小步

React Native(幸運28加拿大28原始碼下載網站開發【大神原始碼論壇】dsluntan.com  【布丁原始碼論壇】budingbbs.com 企娥3393756370)為傳統前端開發者打開了一扇新的大門。其中,使用瀏覽器的除錯工具去Debug移動端的程式碼,無疑是最吸引開發人員的特性之一。

試想一下,當你在手機螢幕按下一個按鈕,處理事件的程式碼就可以立即在瀏覽器的除錯工具裡進行斷點除錯,而且每當你對程式碼進行修改,介面便可以完成快速地過載,省去昂長的編譯時間,這會是多麼提高工作效率。

傳統的Web前端開發人員自然很熟悉瀏覽器的除錯工具,但是對於如何將其在RN中使用以便和移動端結合起來,也許會相當陌生。這也成為了一些開發者跨入RN移動開發大門的第一道小門檻。

本文是筆者一邊參考官方文件,一邊摸索RN除錯過程的記錄。希望能夠幫助新手開發者走出一小步,更快地邁過這道門檻。

在開始之前,你需要搭建好本地開發環境,並有一部Android 5.0版本以上的手機可供連線至電腦。

首先,使用官方工具react-native-cli建立好一個初始化的工程,並安裝好依賴。

安裝的命令為“react-native init DebugTest”(DebugTest為我們這次的專案名稱)

安裝完成後,就會多出一個名為DebugTest專案資料夾,資料夾內結構如下:

圖1. 專案初始結構

讓我們把專案執行起來。我這裡是在Windows下開發Android平臺的應用,並且在此之前,已經用USB線連線好了一臺Android版本7.1.1的真機。幸運28加拿大28原始碼下載網站開發【大神原始碼論壇】dsluntan.com  【布丁原始碼論壇】budingbbs.com 企娥3393756370

執行專案的方法,就是進入DebugTest專案目錄,此時執行命令列react-native run-android。注意,這裡啟動時會新彈出另一個視窗,用於在8081埠啟動一個叫做Metro Bundler的服務,這個視窗在開發時是需要保持執行著的。

圖2. Metro Bundler 視窗

同時,可以看到原cmd命令列視窗,顯示在真機上安裝了apk,並自動對8081埠進行了某種對映,使真機上的應用和我們將要除錯的程式碼建立了動態的關聯。這個過程會比較消耗開發者電腦的系統資源,耐心等待一會兒就好。

圖3. 原cmd命令列視窗

當Metro Bundler視窗顯示index.js的對映進度達到100%時,手機上就可以看到預設的應用介面了。

圖4. 預設應用介面

同時,我們也可以退出應用,在手機的桌面上找到這個安裝好的應用。這裡,它的名字就是DebugTest,圖示是一個預設的安卓樣子。

我們進入這個應用,這時如果搖一搖手機,會彈出除錯相關的設定:

圖5. 除錯設定介面

Reload就是重刷整個應用,類似於在瀏覽器的F5重新整理。

Debug JS Remotely這個我們先留一個懸念,待會再來看。

先看看Enable Live Reload和Enable Hot Reloading。這兩個都可以實現在程式碼儲存時自動更新介面,它們區別是:Live Reload會重刷整個介面,相當於手動執行一次Reload。而Hot Reloading控制得更精準,它不會重刷整個介面,只會更新修改程式碼時影響的那個範圍。官方文件裡描述的是:This will allow you to persist the app's state through reloads. 也就是說,Hot Reloading時整個應用的狀態是不會改變的,頁面也是不會整個重刷的。有趣的是,與Live Reload對比,Hot Reloading的Reloading這個正在進行時的語法,也似乎意味著Hot Reloading是當程式正在執行時去熱乎乎地替換。

也許是因為各種 Reloading過於強大,它有時會出一點問題,比如在開啟Live Reload或者Hot Reloading後,偶爾程式碼錯誤時手機上彈出的紅屏介面在程式碼修改好後仍然不能恢復,這種時候,就需要手動Reload介面才能解決。

讓我們只是Enable Live Reload,然後從react-native引入Button,在View里加上一個按鈕。

圖6. 新增按鈕

這個時候,儲存程式碼。手機介面確實立即就變化了!說明Live Reload確實生效了。

不過,不是我們想要的介面,而是出現紅屏錯誤提示。

圖7. 紅屏錯誤提示

不用怕,遇到問題很正常。這時,可以從頭細心閱讀錯誤提示,發現它指出The title prop of a Button must be a string,並且這個error is located at: in Button (at App.js:37)。根據這個線索,我們看到App.js的第37行,正是剛才新增的Button程式碼。

幸運28加拿大28原始碼下載網站開發【大神原始碼論壇】dsluntan.com  【布丁原始碼論壇】budingbbs.com 企娥3393756370

查閱文件發現,在RN裡,Button元件有許多屬性,其中onPress和title這兩個屬性是required的,也就是必須要有。

圖8. 官方文件關於Button的節選

所以我們修改程式碼,

圖9. 補全Button需要的屬性

儲存,手機介面就重新整理了,並顯示出剛才新增的Button。

圖10. 正常執行

這裡還有一小點值得注意,如果只給Button裡的title設了值,而沒有給onPress設定,介面不會出紅色錯誤,而是在最下面出現一條黃色警告。仔細看,會發現其實這兩個屬性的Type不一樣。由此可知,當需要的型別是string而實際是undefined時,會報error,而需要的型別是function而實際是undefined時,只會報warnning。

同時可以看到,在上面的程式碼中,當按鈕按下時,會呼叫一個打log的事件。但是打出的log在哪兒可以看到呢?

有兩種方法。 第一種是在命令列顯示,在專案當前目錄(注意,一定要在專案當前目錄)再啟動一個新命令列視窗,輸入

就可以在最下面看到輸出的內容了,它不僅可以實時反饋現有的輸入,還儲存了之前的輸入。比如,下面三次輸入,前兩次輸入是在之前還沒有開啟這個命令列視窗時按下的。

也許你會想:我不是想在命令視窗看到輸出,而是想能夠在瀏覽器裡那樣看到輸出,甚至斷點除錯。這就是檢視log的第二種方法。

回到本文的初衷。讓我們回頭再看看除錯設定介面中的Debug JS Remotely選項,現在點選它。這時會彈出Chrome的一個標籤(當然,本地需要預先安裝有Chrome)。

圖11. 開啟Remote JS Debugging後彈出的瀏覽器標籤

注意這裡的Status:Debugger session #0 active就表示程式與該頁面成功建立連線了。

這個時候在瀏覽器開發者工具的除錯視窗,也能看到打出的log。而且它還可以更進一步地進行斷點除錯。

為更好地嘗試除錯功能,我們修改一下程式碼,新增一個sayHello方法輸出log。

圖12. 重新繫結onPress事件

儲存,和預想的一樣,頁面重新整理了,因為Live Reload。

如同除錯Web前端程式碼一樣,我們開啟瀏覽器的開發者工具,找到程式碼檔案,並在sayHello函式裡打一個斷點。這個時候,按下手機上的Test按鈕,可以看到程式執行到斷點停下了,這與除錯網頁程式碼是多麼相似:

圖13. 瀏覽器上的斷點除錯

不過,與除錯純網頁程式碼有兩點不同。

第一,瀏覽器的頁面上看不到應用介面,只能在手機上看到介面。

第二,手機上的介面在程式被斷住的情況下,仍然可以接收事件。舉個例子,就在此時,手機上該應用的介面表面上沒什麼反應,但是,如果你再多次按下Test按鈕,事件都會被記住,到時候會挨個響應。只是現在程式斷在了第一次按下按鈕的時候。

我們讓程式繼續(如果在斷點期間多次按下按鈕,會有多次被斷住)。

圖14. 瀏覽器控制檯輸出

我們按下了6次,除錯工具下也顯示出6次輸出。這是與除錯網頁時的不同:當除錯網頁時,一旦執行到斷點,瀏覽器的頁面其實就不可點選了。

到這一步,是不是覺得使用RN開發也沒有那麼難呢?幸運28加拿大28原始碼下載網站開發【大神原始碼論壇】dsluntan.com  【布丁原始碼論壇】budingbbs.com 企娥3393756370

至於Toggle Inspector, Show Perf Monitor, Start/Stop Sampling Profiler和Dev Settings,我們暫時可以不用管它們。

目前已經知道了除錯設定中Remote JS Debugging, Live Reload和 Hot Reloading。相信我們已經可以比較從容地Debug簡單的 RN應用了。這裡以Windows下的Android為例,其實在Mac下開發iOS也是相似的。

希望本文的分享對嘗試RN的新手朋友有所幫助。如果大家對下篇想講的內容有自己的想法,請留言告訴我,我們一定會認真考慮。


相關推薦

React Native基礎&入門幸運28加拿大28原始碼下載網站開發教程除錯React Native應用小步

React Native(幸運28加拿大28原始碼下載網站開發【大神原始碼論壇】dsluntan.com  【布丁原始碼論壇】budingbbs.com 企娥3393756370)為傳統前端開發者打開了一扇新的大門。其中,使用瀏覽器的除錯工具去Debug移動端的程式碼,無疑是

React Native基礎&入門教程除錯React Native應用小步

React Native(以下簡稱RN)為傳統前端開發者打開了一扇新的大門。其中,使用瀏覽器的除錯工具去Debug移動端的程式碼,無疑是最吸引開發人員的特性之一。 試想一下,當你在手機螢幕按下一個按鈕,處理事件的程式碼就可以立即在瀏覽器的除錯工具裡進行斷點除錯,而且每當你對程式碼進行修改,介面便可以完成

React Native基礎&入門教程初步使用Flexbox佈局

在本篇裡,讓我們一起來了解一下,什麼是Flexbox佈局,以及如何使用。 一、長度的單位 在開始任何佈局之前,讓我們來首先需要知道,在寫React Native元件樣式時,長度的不帶單位的,它表示“與裝置畫素密度無關的邏輯畫素點”。 這個怎麼理解呢? 我們知道,螢幕上一個發光的最小點,對應著一

React Native基礎&入門教程以一個To Do List小例子,看props和state

本文由葡萄城技術團隊於部落格園原創並首發 轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 在上篇中,我們介紹了什麼是Flexbox佈局,以及如何使用Flexbox佈局。還沒有看過的小夥伴歡迎回到文章列表點選檢視之前的文章瞭解。 那麼,當我們有了基本

React16.4 開發簡書專案 從零基礎入門到實戰(雲盤下載

第1章 課程導學本章主要介紹學習react的重要性,課程的知識大綱,學習前提,講授方式及預期收穫。1-1 課程導學第2章 React初探本章主要講解React專案的開發環境搭建,工程程式碼結構及React中最基礎的語法內容,同時對前端元件化思想進行介紹。2-1 Rea

《零基礎入門學習Python》(36)--類和物件面向物件程式設計的相關知識

前言 Python3 面向物件 Python從設計之初就已經是一門面向物件的語言,正因為如此,在Python中建立一個類和物件是很容易的。本章節我們將詳細介紹Python的面向物件程式設計。 如果你以前沒有接觸過面向物件的程式語言,那你可能需要先了解一些面嚮物件語言的一

《零基礎入門學習Python》(40)類和物件一些與類和物件相關的BIF

知識點: 1.issubclass(class,classinfo)#class是classinfo的子類則返回True,相反則返回False 注意: 1.這種檢查是非嚴肅性的檢查,他會把自身當成自身的子類 2.classinfo可以是類物件組成的元組,只要cla

react-native 在新版Xcode(10+)中執行出現的問題 node_modules/react-native/third-party/glog-0.3.4 , C compiler ca

解決方法是: github 問題地址  https://github.com/facebook/react-native/issues/19774 I had the same issue bu

【零基礎入門學習Python筆記017】GUI的最終選擇Tkinter

1.Canvas元件    1.1 在Canvas元件上繪製物件,可以用create_xxx()的方法(xxx表示物件型別,例如直線line,矩形rectangle和文字text等)from tkinter import * # 建立主視窗 root = Tk() w =

基礎入門人工智能和機器學習視頻教程

技術 系統 實戰案例 計算 flow 技巧 follow 數據模型 ref 課程下載: https://pan.baidu.com/s/1e8azEeR1De_-fX2F29mn5w 提取碼: ctgu 5大階段,20+課程,16+經典案例,5層級能力訓練模型(代碼級、應用

Telerik UI for ASP.NET AJAX教程React應用程式中管理狀態的3個基本技巧

下載Telerik UI for ASP.NET AJAX最新版本 在React應用程式中學習一些有關使用State的快速和重要提示,以幫助您確定哪種選項,適合您的環境。 不要害怕以setState()開頭 首先,如果您是React的新使用者,或者開始使用新的React應用程式,請從Re

教程學習React從接受JSX開始

雖然JSX是擴充套件到ECMAScript的類XML語法,但是它本身並沒有定義任何語義。也就是說它本身不在ECMAScript標準範圍之內。它也不會被引擎或者瀏覽器直接執行。通常會利用很編譯器前處理器來將這些JSX轉化為標準的ECMAScript。 吐槽:雖然JSX出發

web前端基礎教學視訊分享()html+css+js基礎教學(附淘寶網站開發教程

路漫漫其修遠兮 吾將上下而求索 路很長,未來是你們的!獻給每位正在奮鬥的孩紙們。 【寫在前面】15年剛接觸前端的時候,覺得很有魅力,就好像自己能夠控制整個世界似的。 那個時候也不知道怎麼學習怎麼入門,很是苦惱,所以就在淘網上花了20元買了些教程,既然自己踩過坑,就不希望還有人像我這樣繼續

基於U3D的VR開發教程(1)基礎環境配置

開發環境搭建 需要準備的開發工具 U3D,推薦5.0以上 vs推薦2012以上,2012開發需要外掛,2015已經整合。 SteamvrPlugin 推薦外掛VRTK HTC VIVE ps:如果電腦硬體效能過低,可以去下載steamvr的測試版,測

PC蛋蛋APP搭建加拿大開發北京全系列28APP開發H5定制加拿大28源碼,,幸運飛艇定制開發

服務 程序 完美 充值 icm 需要 學習 服務號 正在 2019最新八合一程序完美源碼。包搭建,包安裝,包維護,一條龍服務,讓你省心省力。 目前 正在運營,全網獨家支持在線充值和在線兌換!讓您無需人工操作! 市面上只出售月租版,我們直接提供源碼供您無限搭建,永久使用,

React Native入門到插件化嘗試

插件化 圖片 入門到 嘗試 技術 ima native clas image React Native 從入門到插件化嘗試

CAT跨語言服務加拿大28平臺搭建鏈監控(七)消息分析器與報表

active 進行 del 哪些 name 取出 服務監控 想要 微服務 CrossAnalyzer-調用鏈加拿大28平臺搭建論壇:haozbbs.com Q1446595067分析 在分布式環境中,應用是運行在獨立的進程中的,有可能是不同的機器,或者不同的服務器進程。那

如何使用加拿大28源碼下載理解線程池

出現 command 提交 任務任務 ise ndt shutdown pri 很多 平時接觸過加拿大28源碼下載【dashengba.com】Q3266397597多線程開發的童鞋應該都或多或少了解過線程池,之前發布的《阿裏巴巴 Java 手冊》裏也有一條:可見線程池的重

logback框架之——日誌加拿大28源碼出售分割所帶來的潛在問題

對比 源碼 編譯器 日誌輸出 內容 自增變量 max 日誌分割 單個 源碼:logback-test.xml文件如下加拿大28源碼出售(www.1159880099.com)QQ1159880099 ,有2個需要我們重點關註的參數:fileNamePattern:這裏的日誌

react native基礎

初始化 dcom 更新 con one stat The 銷毀 變化 react native 的兩個核心的屬性控制改變組件:props和state。props是在父組件中進行設置,只要設置完成那麽在組件的生命周期就定死了,不會發生改變。針對數據變化修改的情況,我們需要使用