next 自定义_app 和 _document

目的:因为nextjs里面是直接没有index.js,有时候我们需要整个项目遵循一个layout或者是一个link(比如tailwind),那么这个时候,_app和_document的真正的意义才会开始存在

为什么自定义_app ?
自定义_app d饿目的就是有的时候我们需要load一个component,但是需要这个component符合某一个特定的样式,但是我们又不想重复的写css,那么这个时候_app的意义就有了
'''
import App from "next/app";

import "antd/dist/antd.css";

class MyApp extends App {
// 全剧数据获取
static async getInitialProps({ Component, ctx }) {
// 获取组件的get initial props
// 因为get initial props通常都是异步的,所以这里如果我们使用async
// 一定要加上await
// 每当页面切换的时候,这个方法都会被执行Z
let pageProps;
console.log("the global func is working ...");
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx);
}
return { pageProps };
}

render() {
const { Component, pageProps } = this.props;
return <Component {...pageProps} />;
}
}

export default MyApp;

'''

为什么我们需要写_document ?
首先,我们没有index.html,有时候我们需要在添加外部的link,比如tailwind和animate.css,那么这个时候我们就要自定义document
'''
import Document, { Html, Head, Main, NextScript } from "next/document";

class MyDocument extends Document {
static async getInitialProps(ctx) {
const componentProps = await Document.getInitialProps(ctx);
return {
...componentProps
};
}

render() {
return (
<Html>
<Head>
</Head>
<body className="test">
<Main />
<NextScript />
</body>
</Html>
);
}
}

export default MyDocument;

'''

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容