我知道在这个主题中有几个nextjs和reactjs问题,但是我认为这已经足够具体了,可以有一个自己的线程。所以我有一个NextJS项目,我希望在点击时按钮消失,然后动态导入组件并呈现它。
动态导入组件至关重要,原因有两点。
1.因为我们使用依赖于"window"的组件中的库
1.因为该组件影响加载时间,并且我们仅在单击"init按钮"时才需要它
下面是我的index.js代码:
import Head from "next/head";
import Image from "next/image";
import Link from "next/link";
import dynamic from "next/dynamic"
import React, { useEffect, useState } from "react";
import { Inter } from "@next/font/google";
const inter = Inter({ subsets: ["latin"] });
export default function Home() {
return (
<>
<Head>
<title>My page</title>
<meta
name='description'
content="Some desc. content"
/>
<meta name='viewport' content='width=device-width, initial-scale=1' />
<link rel='icon' href='/favicon.ico' />
</Head>
<button onClick={initSurvey()}>Initialize!</button>
</>
)
}
function initSurvey(){
console.log("The button is working!")
const Survey = dynamic(() => import("../components/SurveyComponent"), {
ssr: false,
})
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
请记住,这不是我所能做的全部,我只是清理了失败的尝试,为您提供一个干净,可读和可理解的片段。
先谢谢你!
1条答案
按热度按时间xuo3flqw1#
通过查看React.lazy文档和本指南,我设法找到了这个解决方案:
测试一下,如果对你有帮助就告诉我!