當初新學React-native的時候,也是感覺一臉懵逼,只能看官網(wǎng),看視頻,去找qq群,沒人幫助自己。一點一點肯,慢慢的跳坑,然后再跳出來,學到現(xiàn)在,也不敢說能參透notejs的原理,但是 我會把自己遇到的一些小技巧記下來,方便后人采納。
很多新手好比調試網(wǎng)絡接口的時候會很苦惱,為什么呢? 一是因為對fetch的不熟悉,不知道這樣寫對不對,想通過打log的方式去看看程序執(zhí)行的過程,但是reactnative中要不用ToastAndroid 要不用alert,但是這寫只能打出一個字符串,有時候拿不準數(shù)據(jù)類型還會報錯,如果用dubug的模式,會非常卡頓,而且效率不高;二是對整個React-native流程的不熟悉,感覺寫代碼就是碰運氣,一點一點試試。
我還是想給新手的同學的們點忠告,官網(wǎng)還是要看的,一定要仔細。里面還是有很多好東西的,那我就說一下React-native的調試小技巧。
Log
很多同學疑問 ,既然js有個全局API console.log() 為什么看不到輸出呢?或者找不到輸出在哪里,有很多同學認為console的log只能在debug的窗口下的console下打印出來,那么你就錯了,mac自帶的終端 用logcat也可以輸出。
就記住一個命令就行
react-native log-android
當然,如果是ios的就是
react-native log-ios
原理很簡單,debug模式,app會通過網(wǎng)絡把你的本地代碼部署到瀏覽器上,讓瀏覽器模擬運行,所以你會感覺到卡,而終端打印log的原理就是把console打印的log結合logcat打印出來,既然是到了logcat這一步,那還不隨便讓你折騰呢。
Debug 彈窗
在開發(fā)的過程中需要經(jīng)常調試程序,F(xiàn)acebook 制定的調試模式 必須搖晃手機才能彈出debug 彈窗,真機還可以搖一搖 ,但是到了模擬器上 就沒辦法搖了,有的同學要說,模擬器不是有menu鍵嗎 ?Facebook 也規(guī)定了可以按menu健彈出debug 窗口,我想說同學你說的對,但是到了手機5.0及以上版本,menu鍵取消了,取而代之的是多任務鍵。現(xiàn)在我想說的是,雖然取消了但是還是可以通過ADB命令去模擬按鍵的
強大的Adb命令啊!
adb shell input keyevent 82
試試吧,是不是感覺神奇。對這個命令可以幫助你免去搖一搖辛苦,免去模擬器5.0以上沒有menu健的煩惱。
PS:有些手機可能不好使,但是大部分手機能用
附帶一些adb shell input keyevent KEY_CODE
0 --> "KEYCODE_UNKNOWN"
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"