在 next.js 的自定义 _app 组件中使用 `getInitialProps ` 会禁用客户端渲染吗?
Does using `getInitialProps ` in custom _app component in next.js disable client-side rendering?
根据next.js官方documentation:
import React from 'react'
import App from 'next/app'
class MyApp extends App {
// Only uncomment this method if you have blocking data requirements for
// every single page in your application. This disables the ability to
// perform automatic static optimization, causing every page in your app to
// be server-side rendered.
//
// static async getInitialProps(appContext) {
// // calls page's `getInitialProps` and fills `appProps.pageProps`
// const appProps = await App.getInitialProps(appContext);
//
// return { ...appProps }
// }
render() {
const { Component, pageProps } = this.props
return <Component {...pageProps} />
}
}
export default MyApp
据我所知,如果我在我的 _app.js
文件中使用 getInitialProps
,这将导致我的页面在服务器端呈现。但这是否意味着客户端渲染将不起作用(导航等)?如果不是
究竟是什么意思
causing every page in your app to be server-side rendered.
?
你没有正确理解,只有 Automatic Static Optimization 会被禁用,因为如果你使用 getInitailProps
这意味着页面不是静态的(需要来自服务器的额外数据才能呈现), 因此 Next 无法为其生成静态 html 文件.
根据next.js官方documentation:
import React from 'react'
import App from 'next/app'
class MyApp extends App {
// Only uncomment this method if you have blocking data requirements for
// every single page in your application. This disables the ability to
// perform automatic static optimization, causing every page in your app to
// be server-side rendered.
//
// static async getInitialProps(appContext) {
// // calls page's `getInitialProps` and fills `appProps.pageProps`
// const appProps = await App.getInitialProps(appContext);
//
// return { ...appProps }
// }
render() {
const { Component, pageProps } = this.props
return <Component {...pageProps} />
}
}
export default MyApp
据我所知,如果我在我的 _app.js
文件中使用 getInitialProps
,这将导致我的页面在服务器端呈现。但这是否意味着客户端渲染将不起作用(导航等)?如果不是
causing every page in your app to be server-side rendered.
?
你没有正确理解,只有 Automatic Static Optimization 会被禁用,因为如果你使用 getInitailProps
这意味着页面不是静态的(需要来自服务器的额外数据才能呈现), 因此 Next 无法为其生成静态 html 文件.