기록중

오늘의 검색코드 및 오류코드 firebase v9

lian_is_clone 2021. 12. 24. 19:04

오늘도 인스타그램 클론 중입니다. 

 

그러나 역시나 문제가 있죠 예제 코드는 파베 버전 8 이고 저는 파베 버전 9으로 진행중입니다.

 

문제되는곳은 여기 

import React, { Component } from 'react'
import { Text, View } from 'react-native'
import { connect } from 'react-redux'
import { bindActionCreators } from 'redux'

import { fetchUser } from '../redux/actions/index'

export class Main extends Component {
    componentDidMount() {
        this.props.fetchUser();
    }
    render() {
        const { currentUser }  = this.props;

        console.log(currentUser)
        if(currentUser == undefined){
            return(<View><Text>undefind</Text></View>)
        }
        return (
            <View style={{ flex: 1, justifyContent: 'center' }}>
                <Text>{currentUser.email} is logged in</Text>
            </View>
        )
    }
}

const mapStateToProps = (store) => ({
    currentuser: store.userState.currentUser
})
const mapDispatchProps = (dispatch) => bindActionCreators({fetchUser}, dispatch);


export default connect(null, mapDispatchProps)(Main);
여기서 문제는 snapshot.data() 값을 가져오지 못하고 있는것 입니다.
const {currentUser} 이부분의 중괄호를 없에면 undefined는 피하지만 평션 그자체를 가져오게 됩니다. 
그래서 문제는 저 actions/index.js 파일에 문제가 있을거라고 수정중입니다.
 
import { getFirestore, collection, doc, getDoc  } from "firebase/firestore";
import { getAuth } from 'firebase/auth'

import { USER_STATE_CHANGE } from '../constants/index'

export function fetchUser () {
    const db = getFirestore();
    const auth = getAuth();
    return (dispatch)=>{
        getDoc(doc(db, 'users', auth.currentUser.uid))
        .then((snapshot) => {
            if(snapshot.exists){
                dispatch({ type: USER_STATE_CHANGE, currentUser : snapshot.data() })
            }else{
                console.log('does not exist')
            }
        })
    }
}

이렇게 작성이 되었는데 무었이 문제일까요....