Next.js에 Ant Design을 도입하는 방법
14791 단어 AntDesignTypeScriptnext.js
이 절차에서 만드는 코드의 완성형은 GitHub에서 볼 수 있습니다.
동작 데모는 이쪽을 참조하십시오.
Next.js 프로젝트 생성
먼저 다음 명령을 사용하여 Next.js 프로젝트를 만듭니다.
mkdir nextjs-ant-design-typescript
cd nextjs-ant-design-typescript
npx create-next-app --ts .
Next.js 개발 서버 시작
다음 명령을 실행하여 개발 서버를 시작할 수 있다면 OK입니다.
yarn dev
Ant Design 패키지 설치
그런 다음 Ant Design 패키지를 설치합니다.
yarn add antd
관리 화면 레이아웃 만들기
관리 화면의 레이아웃을 구현합니다.
layouts/adminLayout.tsx를 만들고 내용을 다음과 같이 만듭니다.
layouts/adminLayout.tsx
import {
MenuFoldOutlined,
MenuUnfoldOutlined,
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
import { Layout, Menu } from "antd";
import { ReactNode, useState } from "react";
import styles from "./adminLayout.module.css";
const { Header, Sider, Content } = Layout;
function AdminLayout({ children }: { readonly children: ReactNode }) {
const [collapsed, setCollapsed] = useState<boolean>(false);
function toggle() {
setCollapsed(!collapsed);
}
return (
<Layout>
<Sider trigger={null} collapsible collapsed={collapsed}>
<div className={styles.logo} />
<Menu theme="dark" mode="inline" defaultSelectedKeys={["1"]}>
<Menu.Item key="1" icon={<UserOutlined />}>
nav 1
</Menu.Item>
<Menu.Item key="2" icon={<VideoCameraOutlined />}>
nav 2
</Menu.Item>
<Menu.Item key="3" icon={<UploadOutlined />}>
nav 3
</Menu.Item>
</Menu>
</Sider>
<Layout className="site-layout">
<Header className={styles.siteLayoutBackground} style={{ padding: 0 }}>
{collapsed ? (
<MenuUnfoldOutlined className={styles.trigger} onClick={toggle} />
) : (
<MenuFoldOutlined className={styles.trigger} onClick={toggle} />
)}
</Header>
<Content
className={styles.siteLayoutBackground}
style={{
margin: "24px 16px",
padding: 24,
minHeight: 280,
}}
>
{children}
</Content>
</Layout>
</Layout>
);
}
export default AdminLayout;
관리 화면 레이아웃을위한 CSS 모듈도 layouts/adminLayout.module.css에 만듭니다.
layouts/adminLayout.module.css
.trigger {
padding: 0 24px;
font-size: 18px;
line-height: 64px;
cursor: pointer;
transition: color 0.3s;
}
.trigger:hover {
color: #1890ff;
}
.logo {
height: 32px;
margin: 16px;
background: rgba(255, 255, 255, 0.3);
}
.siteLayoutBackground {
background: #fff;
}
Ant Design의 글로벌 CSS 가져오기
Ant Design의 글로벌 CSS를 pages/_app.tsx에서
import
import 'antd/dist/antd.css';
관리 화면 레이아웃을 페이지에서 사용
이번에는 개별 페이지를 만들고 거기에서 관리 화면 레이아웃을 사용합니다.
pages/index.tsx가 코드 생성으로 만들어졌으므로 내용을 다음 코드로 완전히 바꿉니다.
import dynamic from "next/dynamic";
const AdminLayout = dynamic(() => import("../layouts/adminLayout"), {
ssr: false,
});
export default function Home() {
return <AdminLayout>コンテンツ</AdminLayout>;
}
dynamic
에서 import
하는 것은 Ant Design의 Layout
컴퍼넌트가 의존하는 컴퍼넌트로 useLayoutEffect
가 사용되고 있기 (위해)때문에입니다. SSR을 비활성화해야 합니다. 다음의 이슈가 고칠 때까지의 대처법입니다.다음과 같은 외모가되면 OK입니다.
Reference
이 문제에 관하여(Next.js에 Ant Design을 도입하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suin/items/29c8ccf0ddc73565c91d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)