next.js - 如何在 Next.js 中添加 bulma.css 切换导航栏?
问题描述
我在我的 Next.js 项目中添加了 bulma.css 并且一切运行良好,但是导航栏切换不起作用,因为需要添加一些纯 javascript 代码并且 React 不提供纯 DOM 事件
解决方案
只需添加 React Lifecycle 事件并放入您的代码。
原始示例:
import React from "react";
class NavBar extends React.Component {
componentDidMount() {
const $navbarBurgers = Array.prototype.slice.call(
document.querySelectorAll(".navbar-burger"),
0
);
if ($navbarBurgers.length > 0) {
// Add a click event on each of them
$navbarBurgers.forEach(el => {
el.addEventListener("click", () => {
// Get the target from the "data-target" attribute
const target = el.dataset.target;
const $target = document.getElementById(target);
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
el.classList.toggle("is-active");
$target.classList.toggle("is-active");
});
});
}
}
render() {
return (
<nav className="navbar" role="navigation" aria-label="main navigation">
<div className="navbar-brand">
<a className="navbar-item" href="https://bulma.io">
<img
src="https://bulma.io/images/bulma-logo.png"
width="112"
height="28"
/>
</a>
<a
role="button"
className="navbar-burger burger"
aria-label="menu"
aria-expanded="false"
data-target="navbarBasicExample"
>
<span aria-hidden="true" />
<span aria-hidden="true" />
<span aria-hidden="true" />
</a>
</div>
<div id="navbarBasicExample" className="navbar-menu">
<div className="navbar-start">
<a className="navbar-item">Home</a>
<a className="navbar-item">Documentation</a>
<div className="navbar-item has-dropdown is-hoverable">
<a className="navbar-link">More</a>
<div className="navbar-dropdown">
<a className="navbar-item">About</a>
<a className="navbar-item">Jobs</a>
<a className="navbar-item">Contact</a>
<hr className="navbar-divider" />
<a className="navbar-item">Report an issue</a>
</div>
</div>
</div>
<div className="navbar-end">
<div className="navbar-item">
<div className="buttons">
<a className="button is-primary">
<strong>Sign up</strong>
</a>
<a className="button is-light">Log in</a>
</div>
</div>
</div>
</div>
</nav>
);
}
}
export default NavBar;
推荐阅读
- sql - 返回连接 SQL Server 中不匹配的结果
- javascript - 将值从多个对象推送到数组
- javascript - 反应如何在数组列表集中添加一个额外的数组
- docker - 预创建检查错误:“这台计算机正在运行 Hyper-V。激活 Hyper-V 后,VirtualBox 不会启动 64 位 VM
- google-apps-script - Google 表格脚本 - 批量查找和替换
- javascript - document.write 更新输入值
- java - 更新 Spring Mongo 的服务器时间
- java - 执行 mvn clean package 时出错:InvalidAlgorithmParameterException:trustAnchors 参数必须为非空
- python - 将python转换为c#神经网络
- python - 列出 Python Wheel 文件的依赖项