我知道在这个主题中有几个nextjs和reactjs的问题,但我认为这个问题足够具体,可以有自己的主题.因此,我有一个NextJS项目,其中我希望一个按钮在单击时消失,然后动态导入一个组件并呈现它.
由于两件事,动态导入组件是至关重要的.
- 因为我们在组件中使用依赖于"Windows"的库
- 因为该组件会影响加载时间,而我们仅在单击‘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>
请记住,这并不是我能做的全部,我只是清理了失败的try ,为您提供了一个干净、可读和可理解的代码片段.
提前谢谢您!