在 next.js 中将反应导入页面

Posted

技术标签:

【中文标题】在 next.js 中将反应导入页面【英文标题】:Importing react into pages in next.js 【发布时间】:2020-11-15 06:59:57 【问题描述】:

我有一个 Next.js 应用程序,其中包含多个页面。所有页面看起来都相似。

import React,  Component  from "react";
import  from "components/Wrapper";

export default class About extends Component 
  render() 
    return <Wrapper />;
  

我想用函数式组件重构它。

我读到here,由于 next.js 路由系统,您不必在页面中导入 react 包。 Next.js 文档还显示了在页面组件上没有反应导入的示例,但没有给出解释。

你能澄清一下吗?在这种情况下是否有必要导入 React?我可以删除 import React 行吗?

【问题讨论】:

【参考方案1】:

嗯,实际上对于我们所有人来说,在 Next.js 应用程序中何时使用 import React from "react"; 以及何时不使用仍然是一个复杂的问题。但根据 Next.js 的合著者Tim Neutkens 在this thread 中他提到:

当确实使用 JSX 时,Next.js 会自动添加 React 导入。但是请记住,当使用 React 变量时,我们仍然需要import React from 'react'

所以这将向我们展示,每当我们只想从 React 中单独使用 JSX 功能时,我们不必import React from 'react' 并且 Next.js 将为我们隐式导入它,但在任何其他情况下我们都必须这样做。

【讨论】:

据我所知,在 jsx 转译后,无论如何都会添加 import React @kilogram 是的,没错。但是例如,当您想使用useState 时,您仍然需要导入它。因为如果你不这样做,它会抛出一个错误并且它不会到达转换部分。

以上是关于在 next.js 中将反应导入页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在服务器端渲染中将样式应用于 Next.js 中的 HTML?

文档准备好时导入 npm (ReactJS/Next.js)

使用带有 next.js 的反应路由器

Next Js API:使用 s-s-r 反应页面的响应

如何配置 webpack 以使用 css-modules 为 Next.js 应用程序构建反应组件库?

如何在 Next.js 中将路径名从 _document 传递到 _app