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

如何为React Router 6.4+ Route传递动态自定义Props

在React Router 6.4中传递动态自定义Props给路由组件

问题分析

你原代码里的createBrowserRouter是在App组件外部定义的,这里无法访问组件内部的animate状态,直接传递会导致状态无法被读取或响应更新。

解决方案

将路由配置的创建逻辑移到App组件内部,这样就能直接访问组件内的状态,再传递给路由组件:

import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import { useState } from 'react';
import Profile from './Profile';

export function App() {
    const [animate, setAnimate] = useState(true);
    
    // 在组件内部创建路由,此时可直接访问animate状态
    const router = createBrowserRouter([
        { 
            path: '/', 
            element: <Profile animate={animate} /> 
        }
    ]);

    return <RouterProvider router={router} />;
}

复杂路由场景优化

如果路由配置较多,不想全部写在App组件内,可以把路由封装成接收参数的函数,在组件内调用生成路由:

import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import { useState } from 'react';
import Profile from './Profile';

// 封装路由配置函数,接收需要传递的props
function generateRoutes(animate) {
    return [
        { 
            path: '/', 
            element: <Profile animate={animate} /> 
        },
        // 其他路由配置...
    ];
}

export function App() {
    const [animate, setAnimate] = useState(true);
    const router = createBrowserRouter(generateRoutes(animate));

    return <RouterProvider router={router} />;
}

当animate状态更新时,路由会重新生成,Profile组件也会同步接收到最新的props。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:05:39