覆盖_app.js时,getInitialProps的作用是什么?

时间:2018-09-06 01:26:12

标签: next.js

这实际上是做什么的?

  

pageProps =等待Component.getInitialProps(ctx)

它看起来像“ pageProps”,这只是一个空对象

import App, {Container} from 'next/app'
import React from 'react'

export default class MyApp extends App {
  static async getInitialProps ({ Component, router, ctx }) {
    let pageProps = {}

    if (Component.getInitialProps) {
      pageProps = await Component.getInitialProps(ctx)
    }

    return {pageProps}
  }

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

1 个答案:

答案 0 :(得分:3)

getInitialProps允许您调出获取在服务器上呈现组件时想要的道具。

例如,我可能需要显示当前天气,并且我希望Google为该页面的SEO索引信息。

要实现这一目标,您需要执行以下操作:

import React from 'react' import 'isomorphic-fetch' const HomePage = (props) => ( <div> Weather today is: {weather} </div> ) HomePage.getInitialProps = async ({ req }) => { const res = await fetch('https://my.weather.api/london/today') const json = await res.json() return { weather: json.today } } export default HomePage

pageProps = await Component.getInitialProps(ctx)行调用了该初始函数,以便HomePage组件被该天气API调用所产生的初始props实例化。