React 및 GraphQL - 09를 사용하여 Reddit 클론 만들기
yarn add next-urql react-is urql
이제 코드를 약간 리팩토링하고 SSR을
urqlClient
에 추가합니다. 몇 가지 도우미 함수를 만들고 이러한 것들을 이동해 보겠습니다.다음 단계는 인덱스 페이지에서 이
withUrqlClient
함수를 사용하여 urqlClient
를 제공하는 것입니다. Index.tsx
파일로 이동하여 변경해 보겠습니다.export default withUrqlClient(createUrqlClient)(Index);
이제 이 오류가 발생합니다.
Types of property 'credentials' are incompatible.
Type 'string' is not assignable to type '"include" | "omit" | "same-origin" | undefined'.
이 문제를 수정하려면
as const
를 credentials
에 추가하세요. 읽기 전용 속성이 필요하기 때문입니다.
fetchOptions: {
credentials: "include" as const,
},
기본적으로 이것은 SSR이 아닙니다.
ssr: true
를 추가하여 활성화해야 합니다.이제 Post 쿼리를 추가합니다.
query Posts {
posts {
id
createdAt
updatedAt
title
}
}
일단 추가하고 나면 먼저 SSR 없이 시도합니다. 이를 수행하려면 먼저
Posts
데이터를 가져와 Index.tsx
페이지에 표시하십시오.데이터를 얻으면 먼저 코드 블록 아래에서 데이터가 있는지 확인합니다.
{
!data ? ( // check that data is null or not
<div>Loading...</div>
) : (
data.posts.map((p) => {
return <div key={p.id}>{p.title}</div>;
})
);
}
SSR 없이 기능을 시연하기 위해 먼저 서버에 절전 기능을 만들고 느린 로딩을 보여줍니다. 데이터를 로드하는 데 3초가 걸립니다. 그러나 페이지의 소스를 확인하면 소스에 div가 로드되는 것을 볼 수 있습니다.
이제 아래 코드를 추가하여 SSR을 활성화해 보겠습니다.
export default withUrqlClient(createUrqlClient, { ssr: true })(Index);
As a rule of thumb, use SSR for dynamic data loading. Also check that you are using
urlq
queries and mutations in there.
이제 로그인 페이지를 래핑하고 SSR을 사용하지 않도록 페이지를
withUrqlClient
등록해 보겠습니다.// login page
export default withUrqlClient(createUrqlClient)(Login);
// register page
export default withUrqlClient(createUrqlClient)(Register);
이제 우리는
NavBar
. 서버에서 렌더링하는 동안 데이터는 null
이므로 서버에서 실행하고 싶지 않습니다. 쿠키를 여기에 전달하지 않기 때문입니다.먼저 NavBar에
pause: true
를 추가합니다. true
개체를 사용하여 이 false
또는 window
를 정의합니다.// inside useMeQuery define SSR pause
const [{ data, fetching }] = useMeQuery({
pause: isServer(),
});
// isServer.ts file
export const isServer = () => typeof window === "undefined";
서버에서는
undefined
입니다. 따라서 서버 내부에서 이 돌연변이를 처리하지 않습니다.이상으로 이번 포스팅을 마치겠습니다. 이와 관련하여 질문할 사항이 있으면 여기에 댓글을 남겨주세요. 또한 내 이해에 따라 이것을 썼습니다. 따라서 잘못된 점이 있으면 주저하지 말고 저를 수정하십시오. 정말 감사합니다.
오늘의 친구들을 위한 것입니다. 곧 봐요. 고맙습니다.
참조:
이 기사 시리즈는 . 이것은 놀라운 튜토리얼이며 확인하는 것이 좋습니다.
기본 이미지credit
Reference
이 문제에 관하여(React 및 GraphQL - 09를 사용하여 Reddit 클론 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rasikag/learning-react-with-ben-awad-09-37p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)