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

김용민님의 프로필 이미지

작성한 질문수

Next + React Query로 SNS 서비스 만들기

리버스 인피니트 스크롤링

내가 나에게 채팅을 거는 이유

24.07.08 09:35 작성

·

130

0

스크린샷 2024-07-08 오전 9.32.12.png

안녕하세요, 강사님, 개발 하는 도중에, 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) 결과를 보여주세요.

https://github.com/ZeroCho/next-app-router-z/blob/master/lecture/src/app/(afterLogin)/messages/%5Broom%5D/page.tsx