开发者问题收集

未捕获的类型错误:无法读取未定义的属性‘_’

2021-08-13
3599

我又遇到了一个无法解决的问题! 我收到了这个错误,但我不太明白。

在此处输入图像描述

打开 DOM 并阅读整个错误,并在 Google 上花费了大量时间后,我得到的唯一信息是,错误似乎是由这行代码触发的:

const [user, setUser] = useState(null)

这是此行所在的代码:

import React, { useState, useEffect } from 'react';
import { StyleSheet, View, Text, Image, FlatList } from 'react-native';
import { connect } from 'react-redux';

import firebase from 'firebase';
require('firebase/firestore');

function Profile(props) {
  const [userPosts, setUserPosts] = useState([]);
  const [user, setUser] = useState(null);

  useEffect(() => {
    const { currentUser, posts } = props;
    console.log({ currentUser, posts });

    if (props.route.params.uid === firebase.auth().currentUser.uid) {
      setUser(currentUser);
      setUserPosts(posts);
    }
  });

  if (user === null) {
    return <View />;
  }
  return (
    <View style={styles.container}>
      <View style={styles.containerInfo}>
        <Text> {user.name} </Text>
        <Text> {user.email} </Text>
      </View>
      <View style={styles.containerGallery}>
        <FlatList
          numColumns={3}
          horizontal={false}
          data={userPosts}
          renderItem={({ item }) => (
            <View style={styles.containerImage}>
              <Image style={styles.image} source={{ uri: item.downloadURL }} />
            </View>
          )}
        />
      </View>
    </View>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop: 40,
  },
  containerInfo: {
    margin: 20,
  },
  containerGallery: {
    flex: 1,
  },
  containerImage: {
    flex: 1 / 3,
  },
  image: {
    flex: 1,
    aspectRatio: 1 / 1,
  },
});

const mapStateToProps = (store) => ({
  currentUser: store.userState.currentUser,
  posts: store.userState.posts,
});

export default connect(mapStateToProps, null)(Profile);

我正在制作 Instagram 克隆,如果您需要我拥有的任何其他代码,请告诉我,因为我不知道你们都需要什么来帮助我。

2个回答

此错误由此行代码触发

setUser(currentUser);

currentUser 不是一个对象而是一个类,这触发了此错误。(这就是我的理解)

因此我用以下内容替换了它:

169357188​​

现在它运行完美!

chin14
2021-08-19

请使用可选链接运算符

if (props.route?.params?.uid === firebase?.auth()?.currentUser?.uid) {
    setUser(currentUser);
    setUserPosts(posts);
}
Kanti vekariya
2021-08-13