리믹스 및 데이터 로드
9900 단어 react
이 기사에서는 지금까지 정적 Remix 웹 사이트에 로드 데이터를 추가합니다.
데이터를 로드한다는 것은 즉석에서 생성되고 결국 외부 소스에 의해 구동될 수 있는 페이지를 말하는 것입니다.
게시물 페이지 만들기
이 문서에 대해 가지고 있는 모든 게시물로 게시물 개요를 만들고자 합니다.
각 항목을 클릭하는 동안 단일 페이지로 이동할 수 있어야 합니다.
이것과 비슷한 것:
이 동적 게시물 개요 페이지를 생성하여 시작하겠습니다.
개요 페이지 만들기
단일, 다중
posts
기반 페이지를 생성합니다. routes
라는 폴더에 posts
라는 디렉토리를 만들어 봅시다.이 폴더 안에
index.tsx
파일을 만듭니다. 이것은 우리의 개요 페이지 역할을 할 것입니다.useLoaderData
후크를 활용하여 게시물을 로드하고 경로 로더에 대한 JSON 구문 분석 데이터를 반환하는 데 사용할 수 있습니다.먼저 게시물 개체를 정의하고 필요한 모든 가져오기를 로드하려고 합니다.
import { json } from '@remix-run/node';
import { Link, useLoaderData } from '@remix-run/react';
export const loader = async () => {
return json({
posts: [
{
slug: 'post-1',
title: 'My First Post',
},
{
slug: 'post-2',
title: 'The second post I ever made',
},
],
});
};
그런 다음 실제 렌더링된 요소를 다음과 같이 내보낼 수 있습니다.
export default function Posts() {
const { posts } = useLoaderData();
return (
<main>
<h1>All my posts</h1>
<ul>
{posts.map((post) => (
<li key={post.slug}>
<Link to={post.slug} className='text-blue-600 underline'>
{post.title}
</Link>
</li>
))}
</ul>
</main>
);
}
이제
npm run dev,
로 프로젝트를 실행하면 모든 게시물을 볼 수 있고 게시물을 클릭할 수도 있습니다.멋진!
그러나 계속하기 전에 이 게시물 배열을 리팩터링하여 단일 페이지에 대해 다시 사용하고 싶기 때문에 어딘가에 정의하도록 합시다.
Remix는
models
폴더에 있는 모델을 사용할 것을 권장합니다.이 폴더에
post.server.ts
파일을 추가해 보겠습니다.type Post = {
slug: string,
title: string,
};
export async function getPosts(): Promise<Array<Post>> {
return [
{
slug: 'post-1',
title: 'My First Post',
},
{
slug: 'post-2',
title: 'The second post I ever made',
},
];
}
또한 Remix는 TypeScript를 좋아하므로 이 게시물의 유형을 반영하도록 업그레이드했습니다.
그런 다음
pages/posts/index.tsx
로 돌아가서 다음과 같이 로더를 변경할 수 있습니다.type LoaderData = {
posts: Awaited<ReturnType<typeof getPosts>>,
};
export const loader = async () => {
return (
json <
LoaderData >
{
posts: await getPosts(),
}
);
};
그리고 이러한 유형을 정의하여 입력을 반영하도록 렌더링을 수정할 수도 있습니다.
export default function Posts() {
const { posts } = useLoaderData() as LoaderData;
...
}
완벽하고, 리믹스가 행복하고, TypeScript가 만족합니다.
오늘 완성된 코드는 GitHub에서 찾을 수 있습니다.
읽어주셔서 감사합니다. 연결합시다!
제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나
Reference
이 문제에 관하여(리믹스 및 데이터 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dailydevtips1/remix-and-data-loading-4eba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)