React Native 學(xué)習(xí)

參考資料:https://reactnative.cn/docs/0.51/getting-started.html
本人系統(tǒng)和電腦配置

111.png

參考React Native 0.51官方版本
react-native-cli: 2.0.1
react-native: 0.55.4

參考資料:
React Native react-navigation 導(dǎo)航使用詳解
https://www.jb51.net/article/129575.htm
參考免費(fèi)視頻:https://ke.qq.com/webcourse/index.html#course_id=197101&term_id=100340928&taid=2091679138120173&vid=a1417i5op7k
原生與rn交互
http://blog.sina.com.cn/s/blog_6306d14c0102wfiq.html
iOS navigation組件
https://blog.csdn.net/lu1024188315/article/details/73550028
rsa加密
https://www.npmjs.com/package/react-native-rsa

第一步:搭建開(kāi)發(fā)環(huán)境

1.安裝軟件Homebrew

環(huán)境搭建成功


222.png
提示:如果使用VSCode編程寂玲,打開(kāi)code-首選項(xiàng)-設(shè)置镜廉,然后搜索修改”emmet.triggerExpansionOnTab”屬性為true 既穆,修改后可以提示書(shū)寫(xiě)代碼

基本操作

  • command D打開(kāi)頁(yè)面操作面板

Flexbox 布局

flexDirection:

row水平向右龄砰;
row-reverse水平向左故俐;
column:豎直向下;
column-reverse豎直向上膜钓。

justifyContent:

flex-start開(kāi)始的方向依次擺放桃煎;
center中間按規(guī)定方向擺放;
flex-end靠著結(jié)束的方向依次擺放笤受;
space-between相同間隔靠邊按所需方向擺放默認(rèn)為豎直向下穷缤;
space-around相同間隔組件和邊也是相同間隔箩兽,按所需方向擺放默認(rèn)為豎直向下绅项。

flexWarp:

nowarp波浪型水平向右;
warp波浪形豎直向下比肄;
warp-reverse波浪形豎直向上快耿。

alignItems:

flex-start;元素放在次軸開(kāi)始方位
center芳绩;元素放在次軸中間方位
flex-end掀亥;元素放在次軸結(jié)束方位
stretch;元素布滿整個(gè)次軸妥色,如果寬或者高與次軸寫(xiě)死的話搪花,當(dāng)與次軸重和是這個(gè)設(shè)置無(wú)效無(wú)效

alignContent;

stretch;
flex-start撮竿;
content吮便;
flex-end;
space-between幢踏;
space-around

用編輯器打開(kāi)目錄中的.js文件發(fā)現(xiàn)有不少單詞:

*Component  組件髓需,零件
*export 輸出出口
* extends 擴(kuò)展延伸
* constructor  構(gòu)造函數(shù)
*flex 彈性
*
*
*
*
*
*
*
*
*
*

基本語(yǔ)法

*批量自定義組件
import {
  Platform,
  StyleSheet,
  Text,
  View
} from 'react-native';

*render方法就是渲染視圖;
return返回的是視圖的模板房蝉;
StyleSheet.create提供視圖的樣式僚匆,引用方式為style={styles.container}.其中style是視圖的一個(gè)屬性,styles是我們定義的樣式表搭幻,container是樣式表中的一個(gè)樣式咧擂。;
代碼如下:
export default class App extends Component<Props> {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          React-Native入門(mén)學(xué)習(xí)!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit App.js
        </Text>
        <Text style={styles.instructions}>
          {instructions}
        </Text>
      </View>
    );
  }
}
*class Blink extends Component {
  constructor(props) {
    super(props);
    this.state = { showText: true };
    // 每1000毫秒對(duì)showText狀態(tài)做一次取反操作
    setInterval(() => {
      this.setState(previousState => {
        return { showText: !previousState.showText };
      });
    }, 1000);
  }
代碼解釋?zhuān)? setInterval() 多少秒循環(huán)執(zhí)行 檀蹋,settime 執(zhí)行一次松申;后面的括號(hào)表示執(zhí)行的函數(shù) ;() => {}  這個(gè)括號(hào)表示入?yún)榭眨竺胬ㄌ?hào)為函數(shù)俯逾。


*{this.state.text.split(' ').map((word) => word && '??').join(' ')} 
 //以空格為據(jù)切割字符串攻臀,合成一個(gè)數(shù)組。然后把每個(gè)數(shù)組元素轉(zhuǎn)換為??纱昧,并在后面加空格
*
*
*
*
*
*
*
*
*
*
*
*
*

常見(jiàn)問(wèn)題

*單詞拼寫(xiě)要注意
*括號(hào)括的范圍要注意
*逗號(hào)等符號(hào)中英文不一樣
*
*
*
*
*
*
*
*
*
*
*

MaciOS終端命令

cd ../  回到上一級(jí)目錄
touch index.js   創(chuàng)建文件
react-native init TestApp  建立一個(gè)新的工程名字叫TestApp刨啸、
react-native run-ios  運(yùn)行工程

- 問(wèn)題:

1.終端執(zhí)行命令報(bào)錯(cuò)
Ignoring executable-hooks-1.3.2 because its extensions are not built.  Try: gem pristine executable-hooks --version 1.3.2
Ignoring ffi-1.9.14 because its extensions are not built.  Try: gem pristine ffi --version 1.9.14
Ignoring gem-wrappers-1.2.7 because its extensions are not built.  Try: gem pristine gem-wrappers --version 1.2.7
This script requires the user apple to be an Administrator.
  • 解決方案
    當(dāng)前登錄用戶沒(méi)有管理員權(quán)限,系統(tǒng)偏好設(shè)置-用戶與群組-設(shè)置為管理員-重啟電腦再執(zhí)行命令就行
    重新執(zhí)行命令识脆,吃個(gè)中飯设联,中午睡了一覺(jué)醒來(lái)命令執(zhí)行結(jié)束
2.運(yùn)行程序報(bào)錯(cuò)提示:
Failed to load bundle(http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false) with error:(Unable to resolve module `tty` from `/Users/apple/Desktop/memedaiRN/node_modules/window-size/index.js`: Module `tty` does not exist in the Haste module map

This might be related to https://github.com/facebook/react-native/issues/4968
To resolve try the following:
  1. Clear watchman watches: `watchman watch-del-all`.
  2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.
  3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`. (null))

解決方案:執(zhí)行上面提示的命令,然后關(guān)機(jī)重啟

3.運(yùn)行程序報(bào)錯(cuò)提示:
Failed to load bundle(http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false) with error:(Could not connect to development server.

Ensure the following:
- Node server is running and available on the same network - run 'npm start' from react-native root
- Node server URL is correctly set in AppDelegate
- WiFi is enabled and connected to the same network as the Node Server

URL: http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false The operation couldn’t be completed. (NSURLErrorDomain error -1001.))

解決方案:
重啟服務(wù)執(zhí)行以下命令灼捂,對(duì)應(yīng)電腦更換自己的前綴:

/Users/apple/Desktop/memedaiRN/node_modules/react-native/scripts/launchPackager.command ; exit;
3.運(yùn)行程序報(bào)錯(cuò)提示:
ReferenceError: Can't find variable: Image
This error is located at:
    in WalletJXLView (at SceneView.js:10)
    in SceneView (at StackViewLayout.js:488)
    in RCTView (at View.js:60)
    in View (at createAnimatedComponent.js:154)
    in AnimatedComponent (at StackViewCard.js:12)
    in Card (at createPointerEventsContainer.js:28)
    in Container (at StackViewLayout.js:539)
    in RCTView (at View.js:60)
    in View (at StackViewLayout.js:434)
    in RCTView (at View.js:60)
    in View (at StackViewLayout.js:433)
    in StackViewLayout (at withOrientation.js:30)
    in withOrientation (at StackView.js:58)
    in RCTView (at View.js:60)
    in View (at Transitioner.js:163)
    in Transitioner (at StackView.js:22)
    in StackView (at createNavigator.js:133)
    in Navigator (at createKeyboardAwareNavigator.js:11)
    in KeyboardAwareNavigator (at createNavigationContainer.js:393)
    in NavigationContainer (at renderApplication.js:33)
    in RCTView (at View.js:60)
    in View (at AppContainer.js:102)
    in RCTView (at View.js:60)
    in View (at AppContainer.js:122)
    in AppContainer (at renderApplication.js:32)

解決方案:主要看第一行离例,組件Image沒(méi)有引用!Oこ怼宫蛆!

Image加入組件引用列表
import { Text, View, StyleSheet, TextInput,ImageBackground, Image} from 'react-native';
4.運(yùn)行程序報(bào)錯(cuò)提示:
Failed to load bundle(http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false) with error:(TypeError: /Users/apple/Desktop/memedaiRN/App.js: Duplicate declaration "WalletXXWView" (null))

解決方案:
英文意思,重復(fù)定義了組件名WalletXXWView的猛,找找是不是有重名

5.react環(huán)境已經(jīng)準(zhǔn)備好耀盗,無(wú)法加載js文件:
Loading dependency graph, done.
沒(méi)有下面的
 BUNDLE  [ios, dev] ./index.js ▓▓▓▓▓▓▓▓▓▓▓▓▓??? 81.3% (439/493)

原因是我用的4G網(wǎng)絡(luò)鏈接不上我本地的電腦...坑!X宰稹叛拷!

react native熱更新

參考資料:
代碼實(shí)現(xiàn)react-native熱更新(iOS)
http://www.reibang.com/p/1240e4eae418
ReactNative - 打離線包 (一) 原生RN命令打包
http://www.reibang.com/p/bb7c5f1d304e
React-Native做本地服務(wù)器熱更新/熱部署(IOS)
http://www.reibang.com/p/7ebea5ced11b
iOS mac本地服務(wù)器
https://blog.csdn.net/u010281174/article/details/53706712


react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./ios/bundle/index.jsbundle --assets-dest ./ios/bundle
1.運(yùn)行打包bundle文件報(bào)錯(cuò)提示:
Unable to resolve module `redux` from `/Users/apple/Desktop/memedaiRN/js/service/redux/Store.js`: Module `redux` does not exist in the Haste module map

This might be related to https://github.com/facebook/react-native/issues/4968
To resolve try the following:
  1. Clear watchman watches: `watchman watch-del-all`.
  2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.
  3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.

解決方案:在終端上面運(yùn)行一下上面的提示指令就行

2.運(yùn)行打包bundle文件報(bào)錯(cuò)提示:
Loading dependency graph, done.
bundle: Writing bundle output to: ./ios/bundle/index.jsbundle

ENOENT: no such file or directory, open './ios/bundle/index.jsbundle'

解決方案:需要在ios文件夾下面建一個(gè)空的bundle文件夾

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市岂却,隨后出現(xiàn)的幾起案子忿薇,更是在濱河造成了極大的恐慌裙椭,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件署浩,死亡現(xiàn)場(chǎng)離奇詭異揉燃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)筋栋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)炊汤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人二汛,你說(shuō)我怎么就攤上這事婿崭〔ν兀” “怎么了肴颊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)渣磷。 經(jīng)常有香客問(wèn)我婿着,道長(zhǎng),這世上最難降的妖魔是什么醋界? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任竟宋,我火速辦了婚禮,結(jié)果婚禮上形纺,老公的妹妹穿的比我還像新娘丘侠。我一直安慰自己,他們只是感情好逐样,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布蜗字。 她就那樣靜靜地躺著,像睡著了一般脂新。 火紅的嫁衣襯著肌膚如雪挪捕。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天争便,我揣著相機(jī)與錄音级零,去河邊找鬼。 笑死滞乙,一個(gè)胖子當(dāng)著我的面吹牛奏纪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斩启,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼亥贸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了浇垦?” 一聲冷哼從身側(cè)響起炕置,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荣挨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后朴摊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體默垄,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年甚纲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了口锭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡介杆,死狀恐怖鹃操,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情春哨,我是刑警寧澤荆隘,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站赴背,受9級(jí)特大地震影響椰拒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凰荚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一燃观、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧便瑟,春花似錦缆毁、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至养盗,卻和暖如春缚陷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背往核。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工箫爷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聂儒。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓虎锚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衩婚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窜护,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容