You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router中使用URL Params在Loader时出现解构错误如何解决?

问题解决步骤

1. 修复Loader函数的返回值

你的loader函数错误地将movieId作为movie字段返回,而非请求到的电影数据,同时要确保返回正确的数据结构:

export async function loader({params}){
    const movieId = params.movieId
    const res = await axios.get('http://localhost:3000/movies/'+movieId)
    const movie = res.data
    
    // 返回请求到的电影数据,而非movieId
    return {movie}
}

2. 为路由配置关联Loader

movies/:movieId路由未指定loader属性,导致React Router不会调用该loader,useLoaderData()会返回undefined,解构{movie}时触发错误。修改路由配置:

// 注意导入SingleMoviePage和对应的loader
import SingleMoviePage, { loader as singleMovieLoader } from './path/to/SingleMoviePage';

const router = createBrowserRouter([
  {
    path: "/",
    element: <RootLayout/>,
    errorElement: <ErrorPage/>,
    children: [
      {
        path: '/',
        element: <HomePage/>,
        loader: homeLoader
      },
      {
        path: 'movies',
        element: <MoviesPage/>,
      },
      {
        path: 'movies/:movieId',
        element: <SingleMoviePage/>,
        loader: singleMovieLoader // 添加该行关联loader
      }
    ]
  },
]);

错误原因说明

  • 路由未关联loader时,useLoaderData()返回undefined,尝试解构undefined的movie属性会触发Cannot destructure property 'movie' of ...错误。
  • 原loader返回movieId而非实际电影数据,即便修复路由关联,组件也无法拿到正确的电影信息,因此需同时修正返回值。

内容的提问来源于stack exchange,提问作者Sachin Titus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:11:08