javascript 布局中URL参数中的意外视频元素

whhtz7ly  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(75)

我的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' }

tez616oj

tez616oj1#

我猜问题是视频源路径的编写方式,给它们绝对路径,如/videoBgPoster.mp4帮助。

相关问题