인프런 커뮤니티 질문&답변

양진화님의 프로필 이미지
양진화

작성한 질문수

React로 NodeBird SNS 만들기

더미데이터를 갖고오지못하는것 같습니다...!

작성

·

202

0

//UserProfile.jsx
import React, { useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { Card, Button, Avatar } from 'antd';
import { logoutAction } from '../reducers/user';

const UserProfile = () => {
  const { user } = useSelector(state => state.user);
  const dispatch = useDispatch();
  console.log(user);
  
  const onLogout = useCallback(() => {
    dispatch(logoutAction);
  }, []);

  return (
    <div>
      <Card
            actions= {[
              <div key='twit'> 짹짹 <br/> {user.Posts.length} </div>,
              <div key='twit'> 팔로잉 <br/> {user.Followings.length} </div>,
              <div key='twit'> 팔로워 <br/> {user.Followers.length} </div>,
            ]}          
          >
            <Card.Meta 
            avatar = {<Avatar>{user.nickname[0]}</Avatar>}
            title = {user.nickname}
            />
          </Card>
          <Button onClick={onLogout}>로그아웃</Button>
    </div>
  );
}

export default UserProfile;



//reducers/user.js
export const initialState = {
  isLoggedIn: false,
  user: null,
  signUpData: {},
  loginData: {},
};

const dummyUser = {
  nickname: '지나',
  Posts: [],
  Followings: [],
  Followers: [],
  isLoggedIn : true,
  signUpData : {},
}

const LOG_IN = 'LOG_IN'; //액션의 이름
const LOG_OUT = 'LOG_OUT'; 
const SIGN_UP = 'SIGN_UP'; 

//동적 데이터(값이 계속 바뀜) 경우 action을 함수로 만들어야
export const signUpAction = (data) => {
  return {
    type: SIGN_UP,
    data,
  }
}

export const loginAction = {
  type: LOG_IN,
}

export const logoutAction = {
  type: LOG_OUT,
}

const reducer = (state = initialState, action) => {
  switch (action.type) {
    case LOG_IN: {
      return {
        ...state,
        isLoggedIn: true,
        user: dummyUser,
        loginData: action.data,
      }
    }
    case LOG_OUT: {
      return {
        ...state,
        isLoggedIn: false,
        user: null,
      }
    }
    case SIGN_UP: {
      return {
        ...state,
        signUpData: action.data,
      }
    }

    default: {
      return {
        ...state,
      }
    }
  }
}

export default reducer;

 

이렇게 되어있는데 console.log(user); 값이 null 로 뜹니다ㅠㅠ 그래서 뒤에 {user.Posts.length} 와 같은 부분들이 다 안불러와지는것 같아요ㅠㅠ 제로초님 깃헙도 살펴봤는데 뭐가 문제인지 안보이네요ㅠㅠㅠ

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

로그인부분 코드를 봐야할 것 같습니다. 그리고 혹시 새로고침하셨나요? 지금 진도상에서 그 부분에 대한 대비가 없을 것입니다.

양진화님의 프로필 이미지
양진화

작성한 질문수

질문하기