reactjs - 如何在 NextJS 中分离 amp-page 和 not amp-page?

标签 reactjs next.js amp-html

我知道在使用NextJS时,NextJS提供_document.js来制作全局头标签,但我不想使用_document.js。我有两个不同的页面,假设它是 HomeAbout 页面,我想将 About 页面设为 amp 页面,将 Home 设为普通 HTML 页面。我如何实现这一目标?

最佳答案

假设您有正确版本的 Nextjs,您应该能够使用 withAmp 高阶组件包装您的页面:

import { withAmp } from 'next/amp'

...

export default withAmp(Page)

如果您希望能够根据页面是否支持 Amp 有条件地渲染组件,则可以使用 hybriduseAmp (假设您将组件编写为一个函数组件)。

import { withAmp, useAmp } from 'next/amp'


...

const Page = () => {
  const isAmp = useAmp()
  return (
    {isAmp ? <AmpComponent /> : <NonAmpComponent /> }
  )
}

...

export default withAmp(Page, { hybrid: true })

但是,根据我目前的经验,这会导致附加样式表的问题,该样式表通常对于 Amp 的限制来说太长。希望 Zeit 在未来的版本中解决这个问题。

关于reactjs - 如何在 NextJS 中分离 amp-page 和 not amp-page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47276603/

相关文章:

javascript - 从流中的对象值定义联合类型

reactjs - 使用material-ui制作侧边栏

javascript - 如何将 HOC props 传递给 getInitialProps?

amp-html - 当源更新时,Google AMP 清除 CDN

css - 如何覆盖 AMP 页面中的内联样式?

javascript - 在 ReactJS 中使用反向数据流进行子级与父级通信的好方法是什么?

javascript - Webpack 配置 - 添加另一个入口文件

javascript - [Python][Javascript] 无法弄清楚如何将 API 调用从 NEXTjs 网页 GUI 发送到 Python Falcon 后端

next.js - 如何在 Next.js 中排除单个路由中的尾部斜线?

amp-html - 如何禁用 amp-img 默认灯箱功能?