24.07.08 09:35 작성
·
130
0
안녕하세요, 강사님, 개발 하는 도중에, test2계정으로 -> test1계정에 메시지를 걸 떄 원래는 test1계정이 나와야하는데, 현재 로그인한 유저의 정보를 불러오는 상황이 생겼습니다.이유가 무엇인지 궁금합니다!!
import {
HydrationBoundary,
QueryClient,
dehydrate,
} from '@tanstack/react-query';
import style from './profile.module.css';
import UserPosts from './_component/UserPosts';
import { getUserPosts } from './_lib/getUserPosts';
import UserInfo from './_component/UserInfo';
import { auth } from '@/auth';
import { getUserServer } from './_lib/getUserServer';
import { User } from '@/model/User';
export async function generateMetadata({ params }: Props) {
const user: User = await getUserServer({
queryKey: ['users', params.username],
});
return {
title: `${user.nickname} (${user.id})`,
description: `${user.nickname} (${user.id})`,
openGraph: {
title: `${user.nickname} (${user.id}) / Z`,
description: `${user.nickname} (${user.id})`, // 프로필
images: [
{
url: `https://z.nodebirde.com${user.image}`, // upload
width: 800,
height: 600,
},
],
},
};
}
type Props = {
params: { username: string };
};
export default async function Profile({ params }: Props) {
const { username } = params;
const queryClient = new QueryClient();
const session = await auth();
// 사용자 정보 쿼리로 가져옴
await queryClient.prefetchQuery({
queryKey: ['users', username],
queryFn: getUserServer,
});
// 해당 유저의 게시글
await queryClient.prefetchQuery({
queryKey: ['posts', 'users', username],
queryFn: getUserPosts,
});
const dehydratedState = dehydrate(queryClient);
// 서버쪽에서 쿼리를 해온 것을 나중에 dehydratedState로 받으면 됨.
// const user = {
// id: 'zerohch0',
// nickname: '제로초',
// image: '/5Udwvqim.jpg',
// };
return (
<main className={style.main}>
<HydrationBoundary state={dehydratedState}>
<UserInfo username={username} session={session} />
<div>
<UserPosts username={username} />
</div>
</HydrationBoundary>
</main>
);
}
답변 1
0
2024. 07. 08. 11:00
글쎄요. 저 Profile 코드는 관련 없는 코드입니다. 현재 주소랑 콘솔로그 찍거나 리액트쿼리데브툴까지 보여주셔야죠.
현재 주소랑 /messages/[room]/page.tsx 코드를 보여주셔야 합니다. 거기에 ids가 있는데 console.log(ids, session?.user?.email) 결과를 보여주세요.