1. 程式人生 > >通過creact-react-native-app構建專案遇到的坑

通過creact-react-native-app構建專案遇到的坑

       最近公司要使用RN開發APP專案,我從一個後端人員變成了一個前端踩雷的。這兩天看了很多的網上介紹,發現FB新出的CRNA感覺很牛逼,是一個新的沙盒系統,能夠將專案自動編譯成IOS或者Android的包,並且編譯工具EXPO用起來感覺還是很爽的,主要是可以看到其他開源專案的demo,很方便,不用自己下載安裝了。下面記錄一下最近踩的坑,防止以後再次遇到

       1.整合native-base,native-base是一個RN的基礎元件集合,裡面對元件進行了一些封裝,官網地址:https://www.nativebase.io/。整合過程中遇到了許多坑,這裡就不列舉了,只把最後完整的整合過程說一下。

a)環境要求:node 版本大於等於6.0,npm大於等於4.0,react-native-cli,git(我用的2.10.1),

b)安裝過程:

i) 進入CRNA建立的專案檔案,執行命令,安裝NativeBase和@expo/vector-icons

npm install native-base --save
npm install @expo/vector-icons --save
ii) NativeBase使用了一些可以使用loadAsync函式載入的自定義字型,可以檢視EXPO的link檔案(這段是官網說明的,其實是一個大坑啊,我用官網的程式碼,根本就沒法執行,因為要報錯,載入的時候需要有一個判斷機制,後來無意找到一個重複載入的例項才解決,直接上程式碼)
import React from 'react';
import Expo from 'expo';
import {
    Container,
    Header,
    Title,
    Content,
    Text,
    H3,
    Button,
    Icon,
    Footer,
    FooterTab,
    Left,
    Right,
    Body,
    Segment
} from "native-base";

export default class NativeBaseList extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            seg: 2,
            isReady: false
        };
    }

    async componentWillMount() {
        await Expo.Font.loadAsync({
            'Roboto': require('native-base/Fonts/Roboto.ttf'),
            'Roboto_medium': require('native-base/Fonts/Roboto_medium.ttf'),
        });
        this.setState({ isReady: true });
    }

    render() {
        if (!this.state.isReady) {
            return <Expo.AppLoading />;
        }
        return (
            <Container>
                <Header />
                <Segment>
                    <Button
                        first
                        active={this.state.seg === 1 ? true : false}
                        onPress={() => this.setState({ seg: 1 })}
                    >
                        <Text>Puppies</Text>
                    </Button>
                    <Button
                        active={this.state.seg === 2 ? true : false}
                        onPress={() => this.setState({ seg: 2 })}
                    >
                        <Text>Kittens</Text>
                    </Button>
                    <Button
                        last
                        active={this.state.seg === 3 ? true : false}
                        onPress={() => this.setState({ seg: 3 })}
                    >
                        <Text>Cubs</Text>
                    </Button>
                </Segment>
                <Content padder>
                    {this.state.seg === 1 &&
                        <Text>
                            Puppies Selected
            </Text>}
                    {this.state.seg === 2 &&
                        <Text>
                            Kittens Selected
            </Text>}
                    {this.state.seg === 3 &&
                        <Text>
                            Cubs Selected
            </Text>}
                </Content>
            </Container>
        );
    }
}

iii) git說明:git是一個坑,安裝的過程中會使用git命令,因此git在安裝的時候要選擇可以在windows下的cmd視窗執行的雙相容模式,但是在使用的過程中還是會報如下錯誤:


網上搜索了一下,原因是因為git在執行的時候預設是使用[email protected]://這種模式,但是native-base下載是使用[email protected]://這種模式,因此要修改git的配置:

git config --global url."https://".insteadOf git://

修改配置以後,下載會有報警問題不大,在專案中引用能夠正常使用和顯示了。

        2..jsx檔案問題,因為是初學者,所以很多地方不懂,開始建立檔案的時候寫成了.jsx檔案,結果發現RN無法編譯執行,開始一直不懂,網上找了很多地方也沒有答案,後來在自己無意間測試出來的,無知者太老火了,後來百度了一下發現RN可以打包執行.jsx檔案,需要修改原始碼,我自己也寫了一篇部落格記錄,連結如下:http://blog.csdn.net/cy22201222/article/details/77877244

TODO 嵌入到現有專案,目前準備要把RN寫的頁面嵌入到現有專案中,肯定會有很多坑,目前還沒開始,等完成後來更新部落格



相關推薦

通過creact-react-native-app構建專案遇到的

       最近公司要使用RN開發APP專案,我從一個後端人員變成了一個前端踩雷的。這兩天看了很多的網上介紹,發現FB新出的CRNA感覺很牛逼,是一個新的沙盒系統,能夠將專案自動編譯成IOS或者Android的包,並且編譯工具EXPO用起來感覺還是很爽的,主要是可以看到其

react-native win10 構建 android APP

➢ 生成一個簽名金鑰 使用keytool命令生成一個私有金鑰 $ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10

react-native App的原理介紹

nat image prop 效果 沒有 結構 內部 div 單向 react-native App中,大體可以理解為:整個APP作為容器,裏面存放有多個父組件,子組件,孫子組件,各個組件都含有state和props這兩個最重要的屬性. 如下圖所示: React 有pro

使用WebStorm開發React Native除錯Android專案

React-Native自帶的列印log的命令 android : react-native log-android ios : react-native log-ios android studio除錯習慣了,然後在webstorm除錯react-native找到了一個除錯外掛:r

react-native-cli執行專案及打包apk失敗的解決過程

剛開始學習react native,第一步自然是搭建好開發環境,node及jdk本身就有,Python2、Android studio以及Android sdk的安裝倒是沒什麼大問題,按照官網的教程做就行了,還有Android studio我目前理解的是其實主要作用就是配置對應版本的安卓模擬器或者是安裝sdk

windows 下react native App環境搭建問題總結

windows 下react native App環境搭建問題總結 最近在玩react native app但是環境搭建就遇到了很多問題。其中大部分都是分別在網上找到的解決辦法,但是比較分散所以先總結出來以供參考! 環境搭建過程中用到的工具 模擬器:genymotio

開發 React Native APP —— 從改造官方Demo開始

   本文步驟參考L小庸的文章,https://juejin.im/post/5a9602745188257a5c609b2f, 感謝L小庸      RN的生態圈很火爆,但是很難找到一個開箱即用的 React Native APP Demo。目前存

react native xcode修改專案

1. 選中舊工程名,改為新的 然後選擇rename 2. 依次選擇黃色資料夾,修改名字,千萬不要在Xcode外修改!!! 修改結果為 3. 點選搜尋,搜尋舊專案名 點選Find,改為Replace 全部替換掉 4. 此時,還剩下一些需要手動修

React Native 一個小專案其中一些主要功能實現 (頂部導航欄(可滑動),網路解析,上拉重新整理,下拉載入)

//網路解析 import React, { Component } from "react"; import { View, Text, TouchableOpacity } from "react-native"; import RefreshListView, { Re

react native接入原生專案(mac pro)

首先保證安裝了node,watchman,yarn。 1.新建一個資料夾A,裡面新建一個資料夾android,然後把專案根目錄下所有內容放入這個android裡。直接全選複製的話沒有git,可以把整個專案移過去再改名為android。 2.在A下新建package.json: {

React Native第一個專案

你好,世界 根據歷史悠久的“傳統”,我們也來寫一個“Hello World”: import React, { Component } from 'react'; import { Text, View } from 'react-native'; export default clas

快速建立React Native App

告訴大家一個好訊息,為大家精心準備的React Native視訊教程釋出了,大家現可以看視訊學React Native了。 快速建立React Native App 檢視最新的React Native官方文件你會發現,在Getting Started章節下新新增一個

react-native開發之專案連線夜神模擬器步驟(window)

這裡是window為準, 因為mac電腦 夜神模擬器暫時沒有搖一搖功能 連線夜神模擬器 adb.exe connect 127.0.0.1:62001 返回 connected to 127.0.0.1:62001 說明 連線成功!!!! cmd 開啟命令編輯器 進入專案目錄 win

React Native App應用架構設計

在上一篇介紹了React Native開發環境搭建,我們已經可以在本地成功執行一個helloword應用了,本節將開始詳細分析如何搭建一個React Native App應用架構,並支援完整本地執行預覽。前言現在已經有很多腳手架工具,如ignite,支援一鍵建立一個React

React Native 在現有專案中的探路

移動開發中,native開發效能和效果上無疑是最好的。 但是在眾多的情況下,native開發並不是最優的選擇。當需求經常改動的時候,當預算有限的時候,當deadline很近的時候,native開發的成本也就體現出來了。 這時候,webview開始大放異彩,快速開發、無需重新發布版本、人員成本低的特點就顯現

Building a React Native App With Complex Navigation Using React Navigation

In May 2018 my startup switched from the Ionic framework to React Native because the app we are developing needs versatile navigation. Ionic’s way of handl

How to run a React Native app on iOS

How to run a React Native app on iOSI recently started to develop a React-Native app on iOS. This was my first foray into native app development. I was sur

Integrate Touch ID and Face ID to your React Native App

Integrate Touch ID and Face ID to your React Native AppAdding authentication using the user’s Touch ID or the new Face ID is easier than ever in your React

實踐webpack+es6+react+redux+antd構建專案(三) 配置proxy代理

上一篇是關於引入react,redux,antd的,專案已經可以正常運行了,但是拿到的都是定義的死資料。這篇文章講一下配置代理,調mock資料。 簡便起見,我使用的是Easy Mock,定義好mock資料,在專案中引入使用。 先說一下Easy Mock的使用方法, 建立一個專案,

實踐webpack+es6+react+redux+antd構建專案(二) react,redux,antd引入

上一篇文章是關於從零構建一個webpack專案,基本已經啟動成功了,這篇文章將會講一下在專案中使用目前最流行的React框架 1、引入babel相關 現代前端基本都是以es6為規範進行開發,所以我們專案中也就需要引入es6。es6是需要使用babel進行轉換的,瀏覽器才能識別 npm