使用Redux Toolkit时包裹App组件的正确方式及Router位置疑问
关于Redux Toolkit与React Router包裹结构的问题
你的当前代码结构是完全可行的,甚至是推荐的常规写法,下面逐一解答你的疑问:
1. 用BrowserRouter包裹return (<App/>)
是否可行?
return (<App/>)当然可行。React Router要求所有使用路由相关功能(比如<Route>、<Link>、useNavigate、useParams)的组件都必须处于BrowserRouter(也就是你代码里的<Router>)的上下文范围内。把BrowserRouter放在index.js的最外层(包裹整个<App/>),能确保应用里所有组件都能正常使用路由功能,这是标准的实践方式。
2. 是否应该把Router移至return (<Home/>)
页面?
return (<Home/>)绝对不建议这么做。如果只在<Home/>里包裹Router,那么任何不在<Home/>层级下的组件(比如其他页面、全局导航栏)都无法访问路由上下文,使用路由API时会直接报错。Router必须包裹所有需要路由功能的组件,所以放在最外层是最合理的选择。
3. 当前结构会不会给后续开发带来问题?
不会。你的结构顺序很合理:
React.StrictMode作为最外层,帮你检测应用里的潜在问题Provider包裹Router,确保所有路由组件都能访问Redux storeRouter包裹<App/>,让整个应用都能使用路由功能
这个结构是成熟项目的常见写法,后续开发路由、状态管理相关功能都不会有障碍。
内容的提问来源于stack exchange,提问作者Turhan Ergene
相关产品推荐
相关产品推荐

