自定义 <App>

Examples

组件来初始化页面。你可以重写它来控制页面初始化,如下面的事:

  • 当页面变化时保持页面布局
  • 当路由变化时保持页面状态
  • 使用componentDidCatch自定义处理错误
  • 注入额外数据到页面里 (如 GraphQL 查询)

重写的话,新建./pages/_app.js文件,重写 App 模块如下所示:

  1. import App, {Container} from 'next/app'
  2. import React from 'react'
  3.  
  4. export default class MyApp extends App {
  5. static async getInitialProps ({ Component, router, ctx }) {
  6. let pageProps = {}
  7.  
  8. if (Component.getInitialProps) {
  9. pageProps = await Component.getInitialProps(ctx)
  10. }
  11.  
  12. return {pageProps}
  13. }
  14.  
  15. render () {
  16. const {Component, pageProps} = this.props
  17. return <Container>
  18. <Component {...pageProps} />
  19. </Container>
  20. }
  21. }