如何打破Next/React导入地狱?

How to break out of Next/React import hell?

提问人:HenrijsS 提问时间:10/20/2021 更新时间:10/20/2021 访问量:186

问:

在使用 Vue 和 Nuxt 一年多后,我决定学习 React 和 Next.js,几乎立即注意到了可怕的开发人员体验。

每个样式表和组件都需要导入,因此每个组件的开头总是有臃肿的导入地狱。

更不用说你是否需要一个额外的库,因为你不能像Nuxt的选项那样挂接到任何全局对象。this.$plugin

是否有一些软件包可以管理 Nextjs 的这些导入?据我所知,每个使用它的人都不介意它,这就是让我感到惊讶的地方。

这个问题可能是对 React 的侮辱,而且确实如此,但我只想至少有一个理由加入炒作的行列,说明为什么 React 更受欢迎。

ReactJS next.js

评论

0赞 Ramin eghbalian 10/20/2021
对于 NextJS,只需在 _document.js 中导入一次 React,并且不需要将其导入任何组件中
0赞 HenrijsS 10/20/2021
但是其他组件中的组件(按钮)呢?有没有办法自动导入它们?在Nuxt中,你只需编写组件名称,它就会为你做所有事情。

答:

0赞 Ramin eghbalian 10/20/2021 #1

pages 目录中创建一个名为 it or 的文件(用于 TypeScript),并在其中导入 React,如下所示:
(下面的代码是 TypeScript)
_doucument.js_document.ts

import React from 'react';
import Document, {
    DocumentContext,
    Head,
    Html,
    Main,
    NextScript,
} from 'next/document';


export default class CustomDocument extends Document {
    static async getInitialProps(ctx: DocumentContext) {
        const initialProps = await Document.getInitialProps(ctx);
        return { ...initialProps };
    }

    render() {
        return (
            <Html lang="en">
                <Head>
                    <title>Your title</title>
                </Head>
                <body>
                <Main />
                <NextScript />
                </body>
            </Html>
        );
    }
}

并且不再需要在任何组件中导入 React。

评论

0赞 HenrijsS 10/21/2021
但是无论如何都不需要在组件中导入 React。问题不在于导入“React”,而在于每次使用库和组件时都导入它们。我什至不记得,我写了多少次.这只是一件该死的苦差事,Nuxt提供了自动组件导入。为什么这还没有反应出来??import Button from 'components/button