我在 react-router 2.x 配置方面有些挣扎,特别是应用程序基本名称。
我有一个应用程序,它可能在其整个生命周期中具有不同的基本根。例如:
/
开发中/users
生产中/account
迁移后生产中基本名称在几个地方发挥作用:
redirectUrl
的内容到 API 调用 我目前的解决方案是拥有一个 ENV 变量,并通过注入(inject)
window.defs
使其对 Webpack 和应用程序本身都可用。通过 Express 服务器,但我最终还是得到了 ${defs.APP_BASENAME}/signin
之类的东西在整个应用程序的太多地方。如何抽象应用程序库,或者至少将其隐藏在一个位置?我应该能够在路由器的配置中指定基本路由,然后以某种方式简单地使用相对路由,对吧?还是我错过了什么?
最佳答案
你可以装饰你的history
与 basename .您可以将其与 DefinePlugin
混合使用在你的 Webpack 配置中指定应该使用哪个基本名称。
// webpack.config.js
new Webpack.DefinePlugin({
BASENAME: '/users'
})
// somewhere in your application
import { useRouterHistory } from 'react-router'
import { createHistory } from 'history'
const history = useRouterHistory(createHistory)({
basename: BASENAME
})
给定基本名称:
/users
, React Router 将忽略 /users
在路径名的开头,所以:/users
内部匹配路径 /
/users/profile
匹配路径 /profile
. 同样,当您在应用程序中导航时,您不必将基本名称附加到路径中。
<Link to='/friends'>Friends</Link>
将导航到 /friends
在内部,但地址栏中的 URL 将是 /users/friends
. 关于react-router - 在 react-router 中配置应用程序的基本名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41440240/