使用导航堆栈时,Expo 应用程序在 Android 模拟器上崩溃
Expo app crashes on andriod emulator when using navigation stack
大约一周前我刚进入 react native,我偶然发现了这个问题。
每次我将导航 stack/drawer 连接到我的家 app.js 然后我 运行 expo 应用程序都会意外关闭。有时它会显示错误,但不到一秒钟就会关闭。但大多数时候它在关闭前从不显示错误。
我能够捕捉到一个错误,但我不确定它是否是短暂显示的错误。这是错误
unexpected identifier 'n'. Expected either in or if in enumeration syntax.
我不知道这个错误是从哪里来的。
我的App.js
import Home from './screens/Home';
// import * as Font from 'expo-font';
import AppLoading from 'expo-app-loading'
import { useFonts } from 'expo-font';
import React,{ useState } from 'react';
import Navigator from './routes/HomeStack'
export default function App() {
const [fontLoaded] = useFonts({
'nunitoBold': require('./assets/fonts/Nunito-Bold.ttf'),
'nunitoRegular': require('./assets/fonts/Nunito-Regular.ttf'),
})
// const [fontLoaded,setFontLoaded] = useState(false)
if (!fontLoaded) {
return (
<AppLoading/>
)
}else{
return (
<Home/>
)
}
}
我的HomeStack.js
import { createStackNavigator } from "react-navigation-stack";
import { createAppContainer } from "react-navigation";
import Details from "../screens/Details";
import Home from "../screens/Home";
const screens = {
Home: {
screen: Home,
},
ReviewDetails: {
screen: Details,
},
}
const HomeStack = createStackNavigator(screens, {
defaultNavigationOptions: {
headerStyle:{ backgroundColor: '#f00' },
headerTintColor: '#444'
}
})
export default createAppContainer(HomeStack);
我的Home.js
import React, { useState } from 'react'
import { FlatList, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
import { globalStyles } from '../styles/global';
export default function Home({ navigation }) {
const [reviews, setReviews] = useState([
{ title: 'Zelda, Breath of Fresh Air', rating: 5, body: 'lorem ipsum', key: '1' },
{ title: 'Gotta Catch Them All (again)', rating: 4, body: 'lorem ipsum', key: '2' },
{ title: 'Not So "Final" Fantasy', rating: 3, body: 'lorem ipsum', key: '3' },
]);
return (
<View style={globalStyles.container}>
<FlatList
data={reviews}
renderItem={({ item }) => (
<TouchableOpacity onPress={() => navigation.navigate('ReviewDetails', item)}>
<Text>{item.title}</Text>
</TouchableOpacity>
)}
/>
</View>
);
}
这在昨天也很有效。我今天才开始收到这样的错误,我什至没有碰过我的代码。
我的package.json
{
"name": "gamezone",
"version": "1.0.0",
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web",
"eject": "expo eject"
},
"dependencies": {
"@react-navigation/native": "^6.0.6",
"@react-navigation/native-stack": "^6.2.5",
"expo": "~44.0.0",
"expo-app-loading": "~1.3.0",
"expo-font": "~10.0.4",
"expo-status-bar": "~1.2.0",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.3",
"react-native-safe-area-context": "3.3.2",
"react-native-screens": "~3.10.1",
"react-native-web": "0.17.1",
"react-navigation": "^4.4.4",
"react-navigation-drawer": "^2.7.1",
"react-navigation-stack": "^2.10.4"
},
"devDependencies": {
"@babel/core": "^7.12.9"
},
"private": true
}
我发现问题出在我同时安装了抽屉导航和堆栈导航。我也来自 netninja youtube 频道。卸载解决我的问题并按照更新的方式安装它。
大约一周前我刚进入 react native,我偶然发现了这个问题。
每次我将导航 stack/drawer 连接到我的家 app.js 然后我 运行 expo 应用程序都会意外关闭。有时它会显示错误,但不到一秒钟就会关闭。但大多数时候它在关闭前从不显示错误。
我能够捕捉到一个错误,但我不确定它是否是短暂显示的错误。这是错误
unexpected identifier 'n'. Expected either in or if in enumeration syntax.
我不知道这个错误是从哪里来的。
我的App.js
import Home from './screens/Home';
// import * as Font from 'expo-font';
import AppLoading from 'expo-app-loading'
import { useFonts } from 'expo-font';
import React,{ useState } from 'react';
import Navigator from './routes/HomeStack'
export default function App() {
const [fontLoaded] = useFonts({
'nunitoBold': require('./assets/fonts/Nunito-Bold.ttf'),
'nunitoRegular': require('./assets/fonts/Nunito-Regular.ttf'),
})
// const [fontLoaded,setFontLoaded] = useState(false)
if (!fontLoaded) {
return (
<AppLoading/>
)
}else{
return (
<Home/>
)
}
}
我的HomeStack.js
import { createStackNavigator } from "react-navigation-stack";
import { createAppContainer } from "react-navigation";
import Details from "../screens/Details";
import Home from "../screens/Home";
const screens = {
Home: {
screen: Home,
},
ReviewDetails: {
screen: Details,
},
}
const HomeStack = createStackNavigator(screens, {
defaultNavigationOptions: {
headerStyle:{ backgroundColor: '#f00' },
headerTintColor: '#444'
}
})
export default createAppContainer(HomeStack);
我的Home.js
import React, { useState } from 'react'
import { FlatList, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
import { globalStyles } from '../styles/global';
export default function Home({ navigation }) {
const [reviews, setReviews] = useState([
{ title: 'Zelda, Breath of Fresh Air', rating: 5, body: 'lorem ipsum', key: '1' },
{ title: 'Gotta Catch Them All (again)', rating: 4, body: 'lorem ipsum', key: '2' },
{ title: 'Not So "Final" Fantasy', rating: 3, body: 'lorem ipsum', key: '3' },
]);
return (
<View style={globalStyles.container}>
<FlatList
data={reviews}
renderItem={({ item }) => (
<TouchableOpacity onPress={() => navigation.navigate('ReviewDetails', item)}>
<Text>{item.title}</Text>
</TouchableOpacity>
)}
/>
</View>
);
}
这在昨天也很有效。我今天才开始收到这样的错误,我什至没有碰过我的代码。
我的package.json
{
"name": "gamezone",
"version": "1.0.0",
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web",
"eject": "expo eject"
},
"dependencies": {
"@react-navigation/native": "^6.0.6",
"@react-navigation/native-stack": "^6.2.5",
"expo": "~44.0.0",
"expo-app-loading": "~1.3.0",
"expo-font": "~10.0.4",
"expo-status-bar": "~1.2.0",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.3",
"react-native-safe-area-context": "3.3.2",
"react-native-screens": "~3.10.1",
"react-native-web": "0.17.1",
"react-navigation": "^4.4.4",
"react-navigation-drawer": "^2.7.1",
"react-navigation-stack": "^2.10.4"
},
"devDependencies": {
"@babel/core": "^7.12.9"
},
"private": true
}
我发现问题出在我同时安装了抽屉导航和堆栈导航。我也来自 netninja youtube 频道。卸载解决我的问题并按照更新的方式安装它。