【问题标题】:React Navigation saying nothing was returned from renderReact Navigation 说渲染没有返回任何内容
【发布时间】:2020-09-02 22:59:00
【问题描述】:

我有 React 导航设置来返回我的组件,到目前为止,从我所阅读和观看的内容来看,所有内容似乎都已正确设置,当我通过 expo 加载应用程序时,我得到“Invariant Violation: _default(...) :渲染没有返回任何内容。”我不确定我的导航器本身是否有问题,或者我如何称呼我的导航器?不确定它是如何知道在 HomeStack.Navigator 中调用该特定组件的,我认为它需要某种类似的路由来调用以按其名称加载该特定组件?可能缺少整个文件,不确定。

导航文件

import React from "react";
import { NavigationContainer } from "@react-navigation/native";
import { createStackNavigator } from "@react-navigation/stack";

import Home from "../Home";

const HomeStack = createStackNavigator();
const HomeStackScreen = () => {
  <HomeStack.Navigator>
    <HomeStack.Screen name="Home" component={Home} />
  </HomeStack.Navigator>;
};

export default () => {
  <NavigationContainer>
    <HomeStackScreen />
  </NavigationContainer>;
};

App.js 文件

import React from "react";
import Navigation from "./config/navigation";

export default () => <Navigation />;

首页组件文件

import React from "react";
import { StyleSheet, Text, View, ScrollView } from "react-native";

export default class Home extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      bannerText: "PNW Plants",
    };
  }
  render() {
    return (
      <View style={styles.container}>
        <View style={styles.banner}>
          <Text style={styles.bannerText}>{this.state.bannerText}</Text>
        </View>

        <Text
          style={{
            color: "darkgreen",
            marginTop: 40,
            fontSize: 22,
            textDecorationLine: "underline",
            textDecorationColor: "lightgrey",
          }}
        >
          Discovered Plants
        </Text>

        <ScrollView
          style={styles.grid}
          contentContainerStyle={{ flexDirection: "row", flexWrap: "wrap" }}
        >
          <Text style={styles.gridUnit1}></Text>
          <Text style={styles.gridUnit}></Text>
          <Text style={styles.gridUnit}></Text>
          <Text style={styles.gridUnit}></Text>
          <Text style={styles.gridUnit1}></Text>
        </ScrollView>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    backgroundColor: "#fff",
    alignItems: "center",
    overflow: "scroll",
  },
  banner: {
    backgroundColor: "darkgreen",
    height: 55,
    width: "100%",
    justifyContent: "center",
    alignItems: "center",
  },
  bannerText: {
    color: "white",
    fontSize: 30,
    fontWeight: "bold",
  },
  gridBanner: {
    fontSize: 26,
    marginTop: 40,
    color: "darkgreen",
  },

  grid: {
    display: "flex",
    padding: 10,
    width: "90%",
    borderTopWidth: 1,
    borderBottomWidth: 1,
    height: "60%",
    borderStyle: "solid",
    borderColor: "lightgrey",
    marginTop: 40,
    overflow: "hidden",
  },
  gridUnit: {
    backgroundColor: "lightgrey",
    height: 80,
    width: 80,
    margin: 10,
    overflow: "scroll",
  },
  gridUnit1: {
    backgroundColor: "orange",
    height: 80,
    width: 80,
    margin: 10,
  },
});

【问题讨论】:

    标签: javascript reactjs react-native react-navigation


    【解决方案1】:

    如果您在箭头函数中使用花括号,则添加 return

    const HomeStackScreen = () => {
    return (
      <HomeStack.Navigator>
        <HomeStack.Screen name="Home" component={Home} />
      </HomeStack.Navigator>
    )
    };
    

    或者干脆这样做

    const HomeStackScreen = () => (
      <HomeStack.Navigator>
        <HomeStack.Screen name="Home" component={Home} />
      </HomeStack.Navigator>
    )
    };
    

    在您的代码中,HomeStackScreen 返回未定义,这就是您收到错误的原因。

    另外,修改

    export default () => (
      <NavigationContainer>
        <HomeStackScreen />
      </NavigationContainer>;
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-09
      • 2020-11-27
      • 2018-04-05
      • 2020-07-24
      • 2020-09-14
      • 2021-01-01
      • 2019-04-14
      • 1970-01-01
      相关资源
      最近更新 更多