이번에 구현한 기능은 로그인을 한 이후 유저 프로필 조회를 위해 그 유저의 정보를 백엔드 서버로부터 받아와 화면에 표시하는 기능입니다.
const email = sessionStorage.getItem("email");
const token = sessionStorage.getItem("token");
const [user, setUser] = useState({
name: "유저",
profileImage: "https://via.placeholder.com/150x150",
email: "None@naver.com",
nickname: "닉네임",
phoneNumber: "010-0000-0000",
});
const response = await fetch(
'서버 URL/user?email='+email,
{
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": ${token}
},
}
);
useEffect(() => { //userEffect 사용
const fetchData = async () => {
const response = await fetch(
'서버URL/user?email='+email,
{
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": `${token}`
},
}
);
const result = await response.json();
if (response.status === 200) {
setUser({ //userState 사용
name: result.name,
nickname: result.nickname,
email: result.email,
phoneNumber : result.phoneNumber,
profileImage: result.profileImage
});
} else {
console.log("실패");
}
};
fetchData();
}, []);
<div className="user-profile">
<div className="profile-section">
<div className="profile-image">
<img src={user.profileImage} alt="프로필 사진" />
</div>
<div className="user-info">
<h2>{user.name}</h2>
<p>{user.nickname}</p>
<p>{user.email}</p>
<p>{user.phoneNumber}</p>
</div>
</div>
<div className="profile-btn-container">
<Link to="/user/edit" className="user-link">
<button className="edit-profile-btn">
<span role="img" aria-label="pencil">
✏️
</span>{" "}
나의 회원정보 수정
<div className="move-page-icon">
<FontAwesomeIcon icon={faChevronRight} />
</div>
</button>
</Link>
<Link to="/user/chattingList" className="user-link">
<button className="chattingList-btn">
<span role="img" aria-label="conversation">
💬
</span>{" "}
나의 1대1 상담 내역
<div className="move-page-icon">
<FontAwesomeIcon icon={faChevronRight} />
</div>
</button>
</Link>
</div>
<div className="move-seller-page-btn-container">
{isSeller && (
<button
className="move-seller-page-btn"
onClick={handleConnectSeller}
>
사장님 페이지 연결
<div className="move-page-icon">
<FontAwesomeIcon icon={faChevronRight} />
</div>
</button>
)}
</div>
<div className="user-logout-btn-container">
<button className="user-logout-btn" onClick={handleLogout}>
로그아웃
<div className="move-page-icon">
<FontAwesomeIcon icon={faChevronRight} />
</div>
</button>
</div>
</div>
이렇게 화면에 이름과 닉네임, Email, 전화번호 정보를 서버로부터 받아와 비동기적으로 간략하게 띄울 수 있었습니다.
감사합니다.