【问题标题】:Set basename on react-boilerplate在 react-boilerplate 上设置 basename
【发布时间】:2016-05-27 14:28:17
【问题描述】:

我正在配置 react-boilerplate 以在其上启动项目。

我们的开发环境在子路径中发布应用的“开发”版本,例如:example.org/test/project-name

然后,当我们发布项目时,它会停留在example.org/

我想使用浏览器历史记录 (HTML5 API) 而不是哈希历史记录。但这意味着我必须设置 React Router 的 basename 以匹配当前环境。

现在,我正在尝试以这种方式设置静态基本名称:

const browserHistory = useRouterHistory(useBasename(createHistory))({
  basename: '/test/project-name',
});
const store = configureStore(initialState, browserHistory);

但是当我运行应用程序时,主页仍然是/,而不是/test/project-name/


所以,问题是:

  1. 我做错了什么?
  2. 如何使基本名称与当前环境相匹配?

【问题讨论】:

  • 我现在在同一条船上,你设法解决这个问题吗?
  • 不,我只是放弃了。

标签: reactjs react-router react-boilerplate


【解决方案1】:

答案在react-router documentation

请注意,useRouterHistory 已经使用历史中的 useQueries 和 useBasename 增强器预先增强了您的历史工厂。

import { useRouterHistory } from 'react-router'
import { createHistory } from 'history'

const history = useRouterHistory(createHistory)({
  basename: '/base-path'
})

【讨论】:

  • 请再读一遍我的问题。
  • 对不起,这没有帮助。我最初也尝试以几种不同的方式使用 useBasename() 并且得到了您描述的相同行为,基本名称被忽略了。这个修复对我有用。我想你也试过了,但对你没用。
  • 在我已经在使用basename的问题中提供的代码中,我需要一种根据我的问题要求动态设置它的方法。
  • 从我读到的内容中,您尝试将基本名称硬编码为“/test/project-name”,但已经失败。一旦成功(上面的提示),您可以用配置属性变量替换硬编码的名称。如果您希望从它运行的任何地方神奇地设置基本名称,那么您就不走运了。但是您可以废弃整个基本名称并使用 通配符将任何 url 重定向到您的单页应用程序。它可以在一个 tomcat 上下文中运行您的应用程序,而无需额外配置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2017-10-03
  • 2017-08-08
  • 2021-12-15
  • 2017-08-25
  • 1970-01-01
相关资源
最近更新 更多