微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

侧边栏中的导航无法使用 Next.js

如何解决侧边栏中的导航无法使用 Next.js

我正在尝试使用 Next.js 的侧边栏,但代码是 React 格式,我只是尝试复制它并将其转换为 Next.js。它不会转到导航中的任何链接

还有为什么内容没有显示在右边,有人可以帮忙。我在底部发布了 _app.js 文件

import React from 'react'
import {SidebarData} from './SidebarData'
import {Row} from 'react-bootstrap'
import {useRouter} from 'next/router'

export default function Sidebar() {

    const router = useRouter()

    return (
        <div className="Sidebar">
            <ul className="SidebarList">
                {SidebarData.map((val,key) => {
                    return ( 
                        <li 
                            key={key} 
                            className="row"
                            id={router.pathname == val.link ? "active" : ""}
                            onClick={()=> {
                                router.pathname = val.link
                            }}
                        >                   
                            <div id="icon">{val.icon}</div> 
                            <div id="title">{val.title}</div>
                        </li>
                        
                    )   
                })}
            </ul>
        </div>
    )
}
import React from 'react'
import HomeIcon from '@material-ui/icons/Home';
import FormatListNumberedRtlIcon from '@material-ui/icons/FormatListNumberedRtl';
import NoteIcon from '@material-ui/icons/Note';
import DaterangeIcon from '@material-ui/icons/Daterange';
import TrendingUpIcon from '@material-ui/icons/TrendingUp';
import PollIcon from '@material-ui/icons/Poll';
import PieChartIcon from '@material-ui/icons/PieChart';
import Link from 'next/link'

export const SidebarData = [
    {

        title: "Home",icon: <HomeIcon />,link: "/home"

    },{

        title: "Categories",icon: <FormatListNumberedRtlIcon />,link: "/categories"

    },{

        title: "Records",icon: <NoteIcon />,link: "/records"

    },{

        title: "Monthly Income",icon: <PollIcon />,link: "/charts/monthly-income"

    },{

        title: "Monthly Expense",link: "/charts/monthly-expense"

    },{

        title: "Trend",icon: <TrendingUpIcon />,link: "/charts/trend"

    },{

        title: "Breakdown",icon: <PieChartIcon />,link: "/charts/category-breakdown"

    }
]
import '../styles/globals.css'
import 'bootstrap/dist/css/bootstrap.min.css';
import "@fortawesome/fontawesome-svg-core/styles.css"; // import Font Awesome CSS
import { config } from "@fortawesome/fontawesome-svg-core";
config.autoAddCss = false;
import Sidebar from '../components/Sidebar'

function MyApp({ Component,pageProps }) {
    return (
        <>
            <div className="App">
                <Sidebar>
                    <Component {...pageProps} />
                </Sidebar>
            </div>
        </>
    )
}

export default MyApp

如何在中间显示其他页面内容

解决方法

就您而言,导航到另一个页面的正确方法是在您的 router.push<li> 回调中使用 onClick

// Sidebar
<li 
    key={key} 
    className="row"
    id={router.pathname == val.link ? "active" : ""}
    onClick={()=> {
        router.push(val.link) // Replaced with `router.push`
    }}
>                   
    <div id="icon">{val.icon}</div> 
    <div id="title">{val.title}</div>
</li>

至于页面内容没有显示,那是因为您将页面组件作为 Sidebar_app 的子组件传递,但是 Sidebar 没有呈现任何传递给的子组件

在这种情况下,您可以通过在 {children} 的 JSX 中的某处添加 Sidebar 来呈现其子项,不将页面组件作为子项传递给 { {1}}。

Sidebar

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。