feat(project): init
This commit is contained in:
52
components/layout/PathnameRecorder.tsx
Normal file
52
components/layout/PathnameRecorder.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
"use client"
|
||||
|
||||
import { useAppLayoutStore } from "@/components/layout/store"
|
||||
// import { useLoginStore } from "../login/store"
|
||||
import { MenuItem } from "./common"
|
||||
import { usePathname, useSearchParams } from "next/navigation"
|
||||
import { useEffect, useMemo } from "react"
|
||||
interface ComponentProps {
|
||||
menu: MenuItem[] | undefined
|
||||
}
|
||||
|
||||
export function PathnameRecorder({ menu }: ComponentProps) {
|
||||
const pathname = usePathname()
|
||||
|
||||
// const { setFingerprint } = useLoginStore()
|
||||
|
||||
// useEffect(() => {
|
||||
// if (pathname.startsWith("/login")) {
|
||||
// return
|
||||
// }
|
||||
// setFingerprint("")
|
||||
// }, [pathname, setFingerprint])
|
||||
|
||||
const searchParams = useSearchParams() // 查询参数
|
||||
|
||||
const queryParams = Array.from(searchParams.entries()).reduce(
|
||||
(acc, [key, value]) => {
|
||||
acc[key] = value // 或者 acc[key] = value.split(',') 如果值是数组
|
||||
return acc
|
||||
},
|
||||
{} as Record<string, string>
|
||||
)
|
||||
|
||||
// 将查询参数对象转换为查询字符串
|
||||
const queryString = new URLSearchParams(queryParams).toString()
|
||||
|
||||
const sideNavMenu = useMemo(() => {
|
||||
return menu?.find((item) => pathname.startsWith(`/${item.url}`))
|
||||
}, [menu, pathname])
|
||||
|
||||
const { updateMenuDefaultRouter } = useAppLayoutStore()
|
||||
useEffect(() => {
|
||||
pathname.startsWith(`/${sideNavMenu?.url}`) &&
|
||||
sideNavMenu?.url &&
|
||||
`/${sideNavMenu?.url}` !== pathname &&
|
||||
updateMenuDefaultRouter(
|
||||
`/${sideNavMenu?.url}`,
|
||||
queryString ? `${pathname}?${queryString}` : pathname
|
||||
)
|
||||
}, [queryString, pathname, sideNavMenu?.url, updateMenuDefaultRouter])
|
||||
return <></>
|
||||
}
|
||||
Reference in New Issue
Block a user