错误:文本字符串必须在组件内呈现< Text>,< React Native>

dddzy1tm  于 2023-06-30  发布在  React
关注(0)|答案(1)|浏览(209)

错误:文本字符串必须在组件内呈现。在RCTView中(由视图创建)在视图中(由应用程序创建)在RCTView中(由视图创建)在视图中(由ImageBackground创建)在ImageBackground中(由应用程序创建)在RCTView中(由视图创建)在视图中(由NativeLinearGradient创建)在NativeLinearGradient中(由LinearGradient创建)在LinearGradient中(由App创建)在App中(由withDevTools(App)创建)在withDevTools中(App)in RCTView(created by View)in View(created by AppContainer)in RCTView(created by View)in View(created by AppContainer)in AppContainer in main(RootComponent),js engine:爱马仕
在Udemy听讲座时出错。

这里是App.js

  1. import { useState } from "react";
  2. import { StyleSheet, ImageBackground, SafeAreaView } from "react-native";
  3. import { LinearGradient } from "expo-linear-gradient";
  4. import StartGameScreen from "./screens/StartGameScreen";
  5. import GameScreen from "./screens/GameScreen";
  6. export default function App() {
  7. const [userNumber, setUserNumber] = useState(null);
  8. function pickedNumberHandler(pickedNumber) {
  9. setUserNumber(pickedNumber);
  10. }
  11. let screen = <StartGameScreen onPickNumber ={pickedNumberHandler}/>;
  12. if (userNumber) {
  13. screen = <GameScreen />;
  14. }
  15. return (
  16. <LinearGradient colors={["#ddb52f", "#4e0329"]} style={styles.rootScreen}>
  17. <ImageBackground
  18. source={require("./assets/images/background.png")}
  19. resizeMode="cover"
  20. style={styles.rootScreen}
  21. imageStyle={styles.backgroundImage}
  22. >
  23. <SafeAreaView style={styles.rootScreen}> {screen} </SafeAreaView>
  24. </ImageBackground>
  25. </LinearGradient>
  26. );
  27. }
  28. const styles = StyleSheet.create({
  29. rootScreen: {
  30. flex: 1,
  31. },
  32. backgroundImage: {
  33. opacity: 0.2,
  34. },
  35. });

当SafeAreaView组件不存在时,{screen}中不会出现错误,但当屏幕包含SafeAreaView组件时,会出现上述错误。
我确保所有自定义组件都能很好地将文本放入文本组件中。
如果您能让我知道是否有任何错误点或其他错误,我将不胜感激

krcsximq

krcsximq1#

你可以做以下事情,它会起作用。

  1. import { useState } from "react";
  2. import { StyleSheet, ImageBackground, SafeAreaView } from "react-native";
  3. import { LinearGradient } from "expo-linear-gradient";
  4. import StartGameScreen from "./screens/StartGameScreen";
  5. import GameScreen from "./screens/GameScreen";
  6. export default function App() {
  7. const [userNumber, setUserNumber] = useState(null);
  8. function pickedNumberHandler(pickedNumber) {
  9. setUserNumber(pickedNumber);
  10. }
  11. return (
  12. <LinearGradient colors={["#ddb52f", "#4e0329"]} style={styles.rootScreen}>
  13. <ImageBackground
  14. source={require("./assets/images/background.png")}
  15. resizeMode="cover"
  16. style={styles.rootScreen}
  17. imageStyle={styles.backgroundImage}
  18. >
  19. <SafeAreaView style={styles.rootScreen}>
  20. {userNumber ? <GameScreen /> :
  21. <StartGameScreen onPickNumber = {pickedNumberHandler}/>}
  22. </SafeAreaView>
  23. </ImageBackground>
  24. </LinearGradient>
  25. );
  26. }
  27. const styles = StyleSheet.create({
  28. rootScreen: {
  29. flex: 1,
  30. },
  31. backgroundImage: {
  32. opacity: 0.2,
  33. },
  34. });
展开查看全部

相关问题