reactjs - 为 Next Js 项目 React Helm 还是 next/head?

标签 reactjs next.js react-helmet

我正在制作下一个 js 应用程序(React SSR),现在我要在 head 中实现元标记。

所以现在我使用了 next/head在 _app.tsx 文件中,例如,

import React from 'react';
import App from 'next/app';
import Head from 'next/head';
import { ThemeProvider } from '@material-ui/core/styles';
import CssBaseline from '@material-ui/core/CssBaseline';
import theme from '../src/theme';

export default class MyApp extends App {
  componentDidMount() {
    // Remove the server-side injected CSS.
    const jssStyles = document.querySelector('#jss-server-side');
    if (jssStyles) {
      jssStyles.parentElement!.removeChild(jssStyles);
    }
  }

  render() {
    const { Component, pageProps } = this.props;

    return (
      <React.Fragment>
        <Head>
          <title>My page</title>
          <meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" />
        </Head>
        <ThemeProvider theme={theme}>
          {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
          <CssBaseline />
          <Component {...pageProps} />
        </ThemeProvider>
      </React.Fragment>
    );
  }
}

整个工作代码可以在沙箱中找到:https://codesandbox.io/s/interesting-tereshkova-217ks

我只是想知道是否使用next/head在下一个js应用程序中本身就足够了,否则需要实现react-helmet ??

如果react-helmet需要然后请帮助我如何在提供的下一个 js 应用程序中实现。

我是 Next Js 和 SSR 的新手,所以请帮助我找到正确的方向,这是实现结果的最佳方法。

最佳答案

I am just to know whether using next/head itself enough in next js application or else need to implement react-helmet ??



如果您正在推出自己的服务器端渲染解决方案并且不使用 Next.js,那么使用 react-helmet 是有意义的。据我所知,next/head基本上是 react-helmet 的内置版本,可以完成 react-helmet 所做的一切。

所以不,如果您使用 Next.js,则不需要使用 react-helmet。只需使用 next/head .

If the react-helmet is needed then kindly help me how to implement in the provided next js application.



也就是说,如果你想在 Next.js 中使用 react-helmet,这里是一个例子:https://github.com/zeit/next.js/tree/canary/examples/with-react-helmet .不知道你为什么要这样做,但这个例子存在。有some discussion关于它。

顺便说一句,就像 react-helmet 一样,你可以使用 next/head渲染树中的任何位置——不仅仅是 App像您的示例中那样的组件 - 所有标签都将聚合到 <head> 中标签在顶部。

关于reactjs - 为 Next Js 项目 React Helm 还是 next/head?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61063193/

相关文章:

meteor - 正确地将 Meteorjs 与 Reactjs 结合使用?

javascript - 覆盖 Material-UI 样式不起作用

javascript - 在 NextJS 中将 CSS 模块类声明为变量

gatsby - Facebook - Open Graph 未检测到元标记(Gatsby + Netlify)

javascript - 如何防止 react 重新渲染整个组件?

reactjs - 嵌套通量数据

next.js - 将 CSS Reset 文件应用到 Next.js 页面

reactjs - React 上下文和 Next JS

javascript - 使用 Gatsby.js,如何添加特定于路由的 og :image meta tag?

gatsby - 使用 markdown 在 Gatsby Layout 组件中动态添加页面元