【React Native】安裝配置 Expo Router

過去開發React Native,所使用的路由都是React Navigation。但是這個東西使用起來非常困難,配置無比繁瑣。Expo,為了簡化操作,就基于React Navigation開發了Expo Router

Expo Router用起來就要簡單的多了,配置也相對容易很多很多。

不過因為Expo Router的底層還是React Navigation,所以也有很多些時候,我們會去React Navigation官方文檔里找一些需要的配置。

  1. 安裝依賴

使用 create-expo-app 創建一個新的 Expo 應用程序,默認已經安裝和配置 Expo Router 。

如果我們手動安裝路由,需要先安裝依賴:

npx expo install expo-router react-native-safe-area-context react-native-screens expo-linking expo-constants expo-status-bar
  1. 設置路由入口

然后打開package.json,將main這里,修改成:

{"main" : "expo-router/entry"
}

這里是項目的入口配置,要改到expo-router里面。

  1. 清理文件

之前使用的入口文件是根目錄的index.js,但現在由路由來接管了,所以這些文件現在就沒有用了,我們可以直接刪除。找到項目根目錄的index.jsApp.js,這兩個文件直接刪掉。

  1. 新建目錄

在根目錄里,新建一個app目錄,里面再新建一個index.js。剛才配置完成后,項目的入口,會自動變成app/index.js文件。

我們在里面隨便放點內容:

import { StyleSheet, Text, View } from 'react-native';export default function App() {return (<View style={styles.container}><Text style={styles.title}>這是一個新的入口!</Text></View>);
}const styles = StyleSheet.create({container: {flex: 1,backgroundColor: '#fff',alignItems: 'center',justifyContent: 'center',},title: {fontSize: 50,width: 200,fontWeight: 'bold',color: '#e29447',}
});
  1. 運行項目

重新啟動下項目,運行:

npx expo start
  1. 修改深度鏈接標識

還可以打開根目錄的app.json文件,這里是App的一些配置。在 expo 屬性里面增加上scheme 配置:

{"expo" : {//..."scheme" : "heo-app",}
}

這個配置叫做深度鏈接,當這么配置了以后,將來可以通過這種地址:

heo-app://react-native

從別的應用,或者瀏覽器,可以直接跳轉到App里的對應頁面來。

如果你和我現在版本一樣:

{"name": "expo-learn","version": "1.0.0","main": "expo-router/entry","scripts": {"start": "expo start","android": "expo start --android","ios": "expo start --ios","web": "expo start --web"},"dependencies": {"expo": "~53.0.17","expo-status-bar": "~2.2.3","react": "19.0.0","react-native": "0.79.5","urlcat": "^3.1.0","expo-router": "~5.1.3","react-native-safe-area-context": "5.4.0","react-native-screens": "~4.11.1","expo-linking": "~7.1.7","expo-constants": "~17.1.7"},"devDependencies": {"@babel/core": "^7.20.0"},"private": true
}

那么按照如上操作會產生一個報錯:

 ERROR  Warning: Invalid prop `style` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.

解決方案如下:

https://stackoverflow.com/questions/79683994/invalid-prop-style-supplied-to-react-fragment-react-fragment-can-only-have

要解決此問題,請轉到 node_modules/expo-router/build/views/Navigator.js 并找到 DefaultNavigator() 函數(位于文件末尾附近)。問題就是從那里產生的。

請用以下代碼替換該函數:

function DefaultNavigator() {// iOS needs flex: 1 style for proper layoutconst isIOS = process.env.EXPO_OS === 'ios';return (<SlotNavigatorWrapper {...(isIOS ? { style: { flex: 1 } } : {})}><SlotNavigator /></SlotNavigatorWrapper>);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915406.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915406.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915406.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

美國VPS服務器Linux內核參數調優的實踐與驗證

美國vps服務器Linux內核參數調優的實踐與驗證在云計算和虛擬化技術日益普及的今天&#xff0c;美國VPS服務器因其穩定的網絡環境和優越的性價比&#xff0c;成為眾多企業和開發者的首選。Linux內核參數的默認配置往往無法充分發揮VPS的性能潛力。本文將深入探討美國VPS服務器上…

在Vscode中使用Kimi K2模型:實踐指南,三分鐘生成個小游戲

Kimi K2是一款基于多專家&#xff08;MoE&#xff09;架構的強大代碼與代理能力基礎模型。本文將通過在VS Code及其擴展Cline和RooCode中的實際應用&#xff0c;詳細說明如何使用Kimi K2-0711-preview模型。不得不說kimi這次的K2模型就是強大&#xff0c;在vscode中配置使用體驗…

基于SpringBoot+Uniapp球場預約小程序(騰訊地圖API、Echarts圖形化分析、二維碼識別)

“ &#x1f388;系統亮點&#xff1a;騰訊地圖API、Echarts圖形化分析、二維碼識別”01系統開發工具與環境搭建前后端分離架構 項目架構&#xff1a;B/S架構 運行環境&#xff1a;win10/win11、jdk17前端&#xff1a; 技術&#xff1a;框架Vue.js&#xff1b;UI庫&#xff1a;…

windows + phpstorm 2024 + phpstudy 8 + php7.3 + thinkphp6 配置xdebug調試

windows phpstorm 2024 phpstudy 8 php7.3 thinkphp6 配置xdebug調試 下載配置phpstudyPhp.ini配置phpstorm配置xdebug運行一會就停了配置虛擬機 0localhost_90.conf 配置php.ini配置下載 在下面地址下載合適的xdebug 放到對應的php https://xdebug.org/wizard 配置phpst…

python的pywebview庫結合Flask和waitress開發桌面應用程序簡介

pywebview的用途與特點 用途 pywebview是一個輕量級Python庫&#xff0c;用于創建桌面應用程序&#xff08;GUI&#xff09;。它通過嵌入Web瀏覽器組件&#xff08;如Windows的Edge/IE、macOS的WebKit、Linux的GTK WebKit&#xff09;&#xff0c;允許開發者使用HTML/CSS/Java…

C#通過HslCommunication連接西門子PLC1200,并防止數據跳動的通用方法

textEdit30.Text ReadValue<int>(() > plc.ReadInt32("DB57.DBD16"), ref _last_num).ToString();// 通用讀取方法&#xff08;支持所有值類型&#xff09;private T ReadValue<T>(Func<OperateResult<T>> readFunc, ref T lastValue) w…

Linux切換到Jenkins用戶解決Jenkins Host key verification failed

以root或sudo user身份, 切換到jenkins用戶 su -s /bin/bash jenkins前往jenkins的home目錄 cd /var/lib/jenkins/查看.ssh下是否已經有known_hosts, 有的話, 是什么內容, 正常情況下, 這時候是沒有對應IP記錄的 cd .ssh/ more known_hosts訪問一下對應IP, 記錄公鑰 ssh 192.16…

7.17 Java基礎 | 集合框架(下)

接上文&#xff1a; 7.16 Java基礎 | 集合框架&#xff08;上&#xff09;-CSDN博客 【1】Map集合 Map 集合是一種能存儲鍵值對的數據結構。它的主要功能是依據鍵&#xff08;Key&#xff09;來快速查找對應的值&#xff08;Value&#xff09; 1、聲明 Map<Integer,Integer…

【LeetCode刷題指南】--反轉鏈表,鏈表的中間結點,合并兩個有序鏈表

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

ubuntu上面的wps2019格式很亂在復制粘貼的時候

問題&#xff1a;在復制內容到 Ubuntu 上的 WPS 2019 出現如下問題&#xff1a;列表符號、換行和縮進錯亂&#xff0c;表現為每行前的點符號&#xff08;?&#xff09;變成不規則對齊或空格間距不統一。原因分析? 主要原因是&#xff1a;WPS 2019 在 Ubuntu 上的兼容性較差&a…

bws-rs:Rust 編寫的 S3 協議網關框架,支持靈活后端接入

bws-rs&#xff1a;Rust 編寫的 S3 協議網關框架&#xff0c;支持靈活后端接入 bws-rs介紹 bws-rs 是一個用 Rust 編寫的輕量級 S3 協議服務端網關框架&#xff0c;旨在幫助開發者快速構建兼容 AWS S3 協議 的對象存儲服務。該框架支持 S3 V4 簽名校驗&#xff0c;集成 Axum 作…

黑馬點評系列問題之p70postman報錯“服務器異常”

問題描述&#xff1a;在做這個位置的時候報錯報錯如下控制臺報錯如下解決根據控制臺的報錯來看&#xff0c;是?Redis模板未注入導致的空指針異常經過排查&#xff0c;原因是這里少了個Resource

Docker搭建Elasticsearch和Kibana

1.安裝docker&#xff0c;確保正常啟動 2.按步驟操作&#xff0c;這里的es是單節點的&#xff0c;如需多節點&#xff0c;需安裝docker-compose進行yml文件的編寫對容器進行編排 #docker拉鏡像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.11.2 docker pul…

【深度學習筆記 Ⅰ】3 step by step (jupyter)

1. 導包 import numpy as np import h5py import matplotlib.pyplot as plt from testCases_v2 import * from dnn_utils_v2 import sigmoid, sigmoid_backward, relu, relu_backward% matplotlib inline plt.rcParams[figure.figsize] (5.0, 4.0) # set default size of plo…

前端流式渲染流式SSR詳解

以下是關于前端流式渲染及流式SSR&#xff08;Server-Side Rendering&#xff09;的詳細解析&#xff0c;結合核心原理、技術實現、優化策略及實際應用場景展開說明&#xff1a;?? 一、流式渲染基礎原理 核心概念 ? 流式渲染&#xff1a;數據通過分塊傳輸&#xff08;Chunke…

Redis通用常見命令(含面試題)

核心命令get 根據key取valueset 把key和vlaue存入進去key和value本事上都是字符串&#xff0c;但在操作的時候可以不用加上引號""Redis作為鍵值對的結構&#xff0c;key固定就是字符串&#xff0c;value實際上會有多種類型&#xff08;字符串哈希表&#xff0c;列表&…

react/vue vite ts項目中,自動引入路由文件、 import.meta.glob動態引入路由 無需手動引入

utils/autoRouteHelper.ts // src/utils/autoRouteHelper.ts import { lazy } from "react"; import withLoading from "/components/router/withLoading";/** 自動生成某個文件夾下的子路由 */ interface RouteItem {path: string;element?: any;childre…

Linux簡單了解歷史

一、引言Linux是計算機經久不衰的一個計算機操作系統&#xff0c;在那個unix、蘋果macOS、微軟Window神仙打架的年代拼出自己的一席之地。最初的Linux完全就是一個unix的一個翻版&#xff0c;并且最開始的版本(0.01)就是一個差不多一萬行簡單到不能再簡單的版本。那現在Linux是…

lua(xlua)基礎知識點記錄二

1. 關于lua函數傳參參數在lua中給function傳遞參數的時候一般分為兩種情況&#xff1a;值傳遞和引用傳遞值傳遞&#xff1a;值傳遞&#xff1a;數字、字符串、布爾值、nil等基本類型通過值傳遞。函數內部接收的是外部變量的副本&#xff0c;修改副本不會影響原始變量。 雖然我們…

分治算法---歸并

1、排序數組 class Solution {vector<int> tmp; public:vector<int> sortArray(vector<int>& nums) {tmp.resize(nums.size());mergeSort(nums,0,nums.size() - 1);return nums;}void mergeSort(vector<int>& nums, int left , int right){if…