如何在使用节点 js 时 运行 document.getelementbyclassname()
how to run document.getelementbyclassname() while using node js
我正在学习节点 js,并且我试图在将鼠标悬停在 header 中的 link 上时显示一个大型菜单。我知道 'document.getElementByClassName' 不会因为 ssr 而工作,但我不知道我的问题的解决方案。
我尝试过使用文档中的动态导入,但不太了解如何将其实现到我的代码中。下面是图片。
image
如果您使用的是当前版本的 nextjs,当您的页面组件不动态加载任何内容时,您不必担心 SSR。由于您是初学者,请将 _app.js 和 _document.js 保留为默认值。
在 pages
文件夹之外创建一个名为 components
的文件夹。在该文件夹中创建一个名为 Base.js 的文件并粘贴此代码
import React, {
useState
} from "react";
const Menu = () => {
const [hide, setHide] = useState(true);
const showMenu = (e) => {
e.preventDefault();
setHide(false);
};
const hideMenu = (e) => {
e.preventDefault();
setHide(true);
};
return ( <
div className = "container" >
<
div className = "dropdown"
onMouseEnter = {
showMenu
}
onMouseLeave = {
hideMenu
} >
Menu <
/div> <
ul className = "menu-area"
style = {
{
display: hide ? "none" : "block"
}
} >
<
li > Home < /li> <
li > Home < /li> <
li > Home < /li> <
li > Home < /li> < /
ul > <
/div>
);
};
const Base = ({
children
}) => {
return ( <
div >
<
Menu / > {
children
} <
/div>
);
};
export default Base;
<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>
现在您可以将 Base 组件导入到所有其他组件,并将这些组件中的所有内容包装在 Base 组件内,就像这样 -> <Base> /*your code */</Base>
我正在学习节点 js,并且我试图在将鼠标悬停在 header 中的 link 上时显示一个大型菜单。我知道 'document.getElementByClassName' 不会因为 ssr 而工作,但我不知道我的问题的解决方案。
我尝试过使用文档中的动态导入,但不太了解如何将其实现到我的代码中。下面是图片。
image
如果您使用的是当前版本的 nextjs,当您的页面组件不动态加载任何内容时,您不必担心 SSR。由于您是初学者,请将 _app.js 和 _document.js 保留为默认值。
在 pages
文件夹之外创建一个名为 components
的文件夹。在该文件夹中创建一个名为 Base.js 的文件并粘贴此代码
import React, {
useState
} from "react";
const Menu = () => {
const [hide, setHide] = useState(true);
const showMenu = (e) => {
e.preventDefault();
setHide(false);
};
const hideMenu = (e) => {
e.preventDefault();
setHide(true);
};
return ( <
div className = "container" >
<
div className = "dropdown"
onMouseEnter = {
showMenu
}
onMouseLeave = {
hideMenu
} >
Menu <
/div> <
ul className = "menu-area"
style = {
{
display: hide ? "none" : "block"
}
} >
<
li > Home < /li> <
li > Home < /li> <
li > Home < /li> <
li > Home < /li> < /
ul > <
/div>
);
};
const Base = ({
children
}) => {
return ( <
div >
<
Menu / > {
children
} <
/div>
);
};
export default Base;
<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>
现在您可以将 Base 组件导入到所有其他组件,并将这些组件中的所有内容包装在 Base 组件内,就像这样 -> <Base> /*your code */</Base>