// ๊ฐ ํ์ด์ง๋ง๋ค ์ด๋ ๊ฒ ์์ฑ
const TestPage = () => {
const {user} = useAuthStore(); // ์ฌ๊ธฐ์ ๋ฌธ์ ๋ฐ์!
}
undefined๊ฐ ์ฐํ๋ ๋ฌธ์ ๋ฐ์..
// ์ด๋ ๊ฒ ๋์ ..
const TestPage = () => {
const {user:storeUser} = useAuthStore();
const {data:userData} = useUser();
const user = storeUser || userData;
}
์์ฒ๋ผ ํด๊ฒฐํ๋ ค ํ์ผ๋..api๋ฅผ ๋ค์ค์ฌ์ฉํ๋ ๊ฒ์ ์์น์์๋ค.
ํ .. ๋ค๋ฅธ๋ฐฉ๋ฒ์ด ์์๊น? ์๋๋ฉด ์์ ์์์ ์ปดํฌ๋ํธ์์ ์ค๋ฒ๋ฆฌ๋ฉด?
const Layout = () => {
const {user:storeUser, setUser} = useAuthStore();
const {data:userData} = useUser();
const currentUser = storeUser || userData;
useEffect(() => {
if(userData && !storeUser) {
setUser(userData);
}
}, [userData]);
return (
<>
<Header/>
<Outlet context={currentUser}/>
<Footer/>
</>
);
};
const useUser = () => {
const {token, setUser} = useAuthStore();
return useQuery({
queryKey: ['user'],
queryFn: () => getUserProfile(token),
onSuccess: (data) => {
setUser(data)
},
staleTime: 1000 * 60 * 10, // 10๋ถ ๋์ ์ฌํธ์ถ ๋ฐฉ์ง
enabled: !!token // token์ด ์์ ๋๋ง API ํธ์ถ
});
};
๋์ค์ ๊ฐ ํ์ด์ง์์๋ ์ด๋ ๊ฒ ์ฌ์ฉ:
const Profile = () => {
const user = useOutletContext(); // Layout์์ ์ ๋ฌ๋ ์ ๋ณด ์ฌ์ฉ
...
};