next自定义App
作用
- 固定Layout
- 保持一些公用的状态
- 给页面传入一些自定义数据
-
代码
import App,{Container} from 'next/app'class MyApp extends App {static getInitialProps({Component,ctx}){//Component 就是下面的Component组件//返回的参数会作为props被获取到//每次页面切换,该方法都会执行let pagePropsif(Component.getInitialProps){pageProps=await Component.getInitialProps(ctx)}return {pageProps}}render(){const {Component,pageProps}=this.props;//Component是传过来的页面组件,pageProps就是页面中有服务器端渲染的//函数返回的数据可以被组件的props使用的原因return (<Container><Component {...pageProps}><Container>)}}
next自定义Document
定义
只有在服务器端渲染的时候才会被调用
用来修改服务器端渲染的文档内容
一般用来配合第三方css-in-js方案使用代码 _document.js (只有在服务器端渲染的时候,才会生效)
```javascript import Docuemnt,{Html,Head,Main,NextScript} from ‘next/document’
class MyDocument extends Document { static async getInitialProps(ctx){ //一旦重新写了getInitial方法,必须冲新调用 //一下,getInitialProps方法
const props=await Document.getInitialProps(ctx)return {...props}
} render(){ //可以不重写render方法,但是一旦重新,就要写全 return
