Inflearn Community Q&A
아바타 nickname
Written on
·
356
0
[useProfile.js]
import React, { useCallback } from "react";
import { Card, Avatar, Button } from "antd";
import Link from "next/link";
import { useDispatch, useSelector } from "react-redux";
import { logoutRequestAction } from "../reducers/user";
function UserProfile() {
const dispatch = useDispatch();
const { me, isLoggingOut, nickname } = useSelector((state) => state.user);
const onLogOut = useCallback(() => {
dispatch(logoutRequestAction());
}, []);
return (
<>
<Card
actions={[
<div key="twit">
나의 작성 글<br />0
</div>,
<div key="followings">
팔로잉
<br />0
</div>,
<div key="follower">
팔로워
<br />0
</div>,
]}
>
<Card.Meta
avatar={<Avatar>{me.nickname[0]}</Avatar>}
title={me.nickname}
/>
<Link href="/login">
<Button onClick={onLogOut} loading={isLoggingOut}>
로그아웃
</Button>
</Link>
</Card>
</>
);
}
export default UserProfile;
[reducers/user.js]
export const initialState = {
isLoggingIn: false, // 로그인 시도중 => ture가 되면 로딩창을 띄운다.
isLoggedIn: false,
isLoggingOut: false, // 로그아웃 시도중 => ture가 되면 로딩창을 띄운다.
me: null,
signUpData: {},
loginData: {},
};
export const loginRequestAction = (data) => {
return {
type: "LOG_IN_REQUEST",
data,
};
};
export const logoutRequestAction = () => {
return {
type: "LOG_OUT_REQUEST",
};
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case "LOG_IN_REQUEST":
console.log("리듀서 로그인");
return {
...state,
isLoggingIn: true,
};
case "LOG_IN_SUCCESS":
return {
...state,
isLoggingIn: false,
isLoggedIn: true,
me: { ...action.data, nickname: "leehyunju" },
};
case "LOG_IN_FAILURE":
return {
...state,
isLoggingIn: false,
isLoggedIn: false,
};
// --------------------------------------------
case "LOG_OUT_REQUEST":
return {
...state,
isLoggingOut: true,
};
case "LOG_OUT_SUCCESS":
return {
...state,
isLoggingOut: false,
isLoggedIn: false,
me: null,
};
case "LOG_OUT_FAILURE":
return {
...state,
isLoggingOut: false,
};
default:
return state;
}
};
export default reducer;
TypeError: Cannot read property 'nickname' of null
안녕하세요 ! 제로초님 ! 아바타에서 닉네임 첫글자 따오는 부분이 계속 오류가 나서 직접 해결해 보려고 하였으나 도저히 안되서 질문드립니다. useSelector로 user 리듀서 끌고왔는데 nickname 부분만 데이터가 안불러와지는데 어떤게 문제일까요 .........😥
nodejsexpressreduxreactNext.js





감사합니다!!