我的Next.js项目中的页面结构:events/[eventId]
我在events目录中有布局,它适用于events和events/[eventId]中的页面。在布局中,我包含了一个简单的视频背景。然而,我注意到,有时当我从事件页面导航到事件/[id]页面时,URL参数中的事件[id]页面会收到一个带有src或poster属性的元素。我不知道为什么会这样,也不知道如何解决。
任何关于如何解决这个问题的帮助或见解将不胜感激!
events/layout.tsx:
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<>
<BackgroundVideo />
{children}
</>
);
}
后台视频组件:
"use client"
import { useEffect,useState } from "react";
const BackgroundVideo = () => {
const [isClient, setIsClient] = useState(false);
useEffect(() => {
setIsClient(true)
},[])
return(
<div >
{
isClient &&
<video
autoPlay loop muted
poster="videoBgPoster.jpg"
>
<source src="videoBg.mp4"
type="video/mp4"/>
</video>
}
<div className="z-[-90] fixed bg-black bg-opacity-40 h-full w-full"></div>
</div>
);
}
export default BackgroundVideo;
events/[eventId]
type Props = {
params: {
eventId: string,
},
searchParams: Record<string, string> | null | undefined
}
const Event = async ({ params, searchParams }: Props) => {
console.log("Params...: ", params)
}
有时它接收正确的ID,有时这个...
控制台:
参数...:{ id:'videoBgPoster.jpg' }参数.:{ id:'videoBg.mp4' }
1条答案
按热度按时间tez616oj1#
我猜问题是视频源路径的编写方式,给它们绝对路径,如/videoBgPoster.mp4帮助。