【问题标题】:An issue with React-Native rendering a componentReact-Native 渲染组件的问题
【发布时间】:2021-09-07 10:50:50
【问题描述】:

错误

错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。

检查User的渲染方法。

import User from './Components/User';

return(
  <View style={styles.container}>
    <View>
      <User details={details} />
    </View>
  </View>
)

用户组件

import React from 'react';
import {Image, Text, StyleSheet} from 'react-native'
import {
  Card,
  CardItem,
  H1,
} from 'native-base'
import moment from 'moment'

const User = ({details}) => {
    return(
        <Card style={styles.card}>
          <CardItem cardBody style={styles.cardItem}>
            <Image
            source={{
              uri: details.picture?.large,
              width: 150,
              height: 250
            }}
            style={styles.image}
            />
          </CardItem>

          <CardItem style={styles.cardItem}>
            <H1 style={styles.text}>
              {details.name?.title} {details.name?.first} {details.name?.last}
            </H1>
          </CardItem>

          <CardItem bordered style={styles.cardItem}>
            <Text style={styles.text}>
              {details.cell}
            </Text>
          </CardItem>

          <CardItem footer style={styles.cardItem}>
            <Text style={{color: '#fff'}}>
              Registered at 
              {moment(details.registered?.text).format('DD-MM-YY')}
            </Text>
          </CardItem>

        </Card>
    )
}

export default User;

【问题讨论】:

  • 能否请您出示User 代码?
  • 以上编辑!
  • 你使用的是什么版本的native-base
  • 本地基础:3.1.0
  • 在下面查看我的答案。

标签: javascript react-native


【解决方案1】:

尝试像这样导出

export default function User () {
// ... code goes here
}

您也可以在默认导出中使用匿名函数

【讨论】:

    【解决方案2】:

    您似乎已经安装了native-base v3 并导入了native-base v2 组件(CardCardItemH1)等。您必须导入正确的组件并重写您的User 组件。

    CardCardItem 组件在 v3 中不存在,可以使用 Box 等组件轻松构建。 H1 组件也被替换为 Heading 组件。

    https://docs.nativebase.io/migration/card

    【讨论】:

    • 现在我得到如下日志:LOG [错误:useTheme:theme 未定义。好像你忘了把你的应用包装在&lt;NativeBaseProvider /&gt;]
    • 你必须用NativeBaseProvider 包裹你的整个应用程序。 docs.nativebase.io/setup-provider
    • 我还需要将它包装在用户组件中吗?
    • 没有。按照文档中的建议将其包装在您的根级别
    • LOG [Invariant Violation: requireNativeComponent: "RNCSafeAreaProvider" was not found in the UIManager.] 错误 Invariant Violation: requireNativeComponent: "RNCSafeAreaProvider" 在 UIManager 中找不到。我按照医生说的做了,现在我正面临这个
    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多