I could not run the bootstrap navbar collapse feature in nextjs 13. I have tried many ways: 1.I added bootstrap js codes with script by opening head tag. 2. I added it to the layout page. it didn't work despite all this. how can i make this collapse work?. it was working cra and react- bootstrap.
my header component code
"use client";
import Image from "next/image";
import React, { useContext,useEffect } from "react";
import Link from "next/link";
import bootstaplogo from "../asset/b1.svg";
import {
RiMailSendLine,
RiLoginBoxFill,
RiPencilFill,
RiLogoutBoxFill,
} from "react-icons/ri";
import { AuthContext } from "../context/authContext";
import Cart from "./Cart";
import { usePathname } from "next/navigation";
const Header = () => {
const currentPathname = usePathname();
const { currentUser, logout } = useContext(AuthContext);
useEffect(() => {
// Load Bootstrap JS only on the client-side
if (typeof window !== "undefined") {
require('bootstrap/dist/js/bootstrap.bundle.min');
}
}, []);
return (
<>
<div>
<div className="container">
<nav className=" bg-light navbar navbar-expand-md navbar-light fixed-top border-bottom">
<div
href="/"
className=" navbar-brand ps-5 d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none"
>
<Image
alt="logo"
className="me-2"
width="40"
height="32"
src={bootstaplogo}
></Image>
<span className="fs-4">deneme</span>
</div>
<button
className="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNavDropdown"
aria-controls="navbarNavDropdown"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span className="navbar-toggler-icon" />
</button>
<div className="navbar-toggle" id="navbarNavDropdown">
<div className="collapse navbar-collapse justify-content-end ">
<ul className="navbar-nav">
<li className="nav-item">
<Link className= {currentPathname === "/" ? " active nav-link" : "nav-link"} href="/">
{" "}
AnaSayfa
</Link>
</li>
<button className="btn btn-warning px-3 me-2">
<RiMailSendLine /> İletişim{" "}
</button>
</div>
</div>
</nav>
</div>
</div>
</>
);
};
export default Header;
My layout code
import './globals.css'
import { Inter } from 'next/font/google'
import Footer from '../component/Footer'
import Header from '@/component/Header'
const inter = Inter({ subsets: ['latin'] })
import 'bootstrap/dist/css/bootstrap.css'
import {AuthContexProvider} from "../context/authContext"
import { CartProvider } from '../context/CartContext'
export const metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
}
export default function RootLayout({ currentPathname, children }) {
return (
<html lang="tr">
<AuthContexProvider> <CartProvider><Header currentPathname={currentPathname}/>
<div className={`mt-5 ${inter.className}`} >{children}
<Footer/></div>
</CartProvider></AuthContexProvider>
</html>
)
}