경계 넘을 수 있는 것
Server Component 가 Client Component 에 prop 넘기면, data 가 serialize 돼야 해. Boundary 가 대략 "JSON 모양 + React extra 몇 개".
| 허용 ✅ | 차단 ❌ |
|---|---|
| String, number, boolean | Function |
| Array, plain object | Class instance |
| Date (string 으로 serialize) | Symbol |
null / undefined | DOM node / stream |
FormData | Circular reference |
| React element (JSX) 와 Promise |
큰 결과
Server 에서 client 로 function 못 넘김. Client 가 server logic 으로 callback 하고 싶으면 Server Action 정의하고 그걸 내려 (framework 가 serialized POST endpoint reference 로 wrap).
Composition 의 trick
JSX element 가 serialize 됨. 그래서 Server Component 가 다른 Server Component 를 children 으로 Client Component 한테 넘길 수 있음 — Client Component 가 render 만 하고 import 안 함. Server-rendered subtree 를 client-side interactivity 로 wrap 하는 가장 깔끔한 방법.