웹 페이지의 성능을 위해서
server component와 client component를 함께 사용하는 경우가 많다.
server component에서 client component로 변수를 전달할 때
발생하는 에러이다.
Warning: Only plain objects can be passed to Client Components from Server Components. Objects with toJSON methods are not supported. Convert it manually to a simple value before passing it to props.
이 에러는 전달하는 props가 복잡한 object일 때 발생했다.
(나의 경우에는)
해결하는 방법은 간단하다.
object였던 변수를 string으로 바꾼 후 전달하자.
// server component (부모)
import { connectDB } from "@/util/database";
import Link from "next/link";
import ListItem from "./ListItem";
export default function List() {
const client = await connectDB;
const db = client.db("forum");
const result = await db.collection("post").find().toArray();
// 여기서 result에는 _id가 ObjectId라는 오브젝트였다.
// 그래서 각 _id를 모두 string으로 만들어줬다.
result.map((a) => {
a._id = a._id.toString();
})
return (
<div>
<ListItem result={result} /> // props으로 전달한다.
</div>
);
}
// client component (자식)
export default function ListItem(props) {
let result = props.result;
// 받아서 잘 사용하면 된다.
return (
<div>
잘 사용해보자
{result._id}
이런 식으로
</div>
);
}
'개발 공부 > NextJS' 카테고리의 다른 글
[Next js] use client?! 서버 컴포넌트, 클라이언트 컴포넌트에 대해서 알아보자 (0) | 2023.11.13 |
---|---|
[Next js] img가 아닌 Image를 사용해보자 (0) | 2023.11.13 |
[Next js] a태그를 사용하지 말고 Link를 사용하자 (1) | 2023.11.13 |
[Next js] vscode에서 태그 자동완성 안될 때 (0) | 2023.11.13 |
댓글