这似乎是其他一些的重复。但没有任何解决方案对我有用。
通过链接导航工作正常。刷新页面或手动导航仅适用于桌面(chrome 和 firefox,不适用于 Safari)。在桌面 safari 和所有 iOS 浏览器上,它只是在浏览器中显示整个 JSON 对象,似乎并不提供静态文件。
我试过 Router、BrowserRouter 和 HashRouter。唯一有效的是HashRouter。但是,我不想在 url 中使用哈希值。
我没有收到任何错误,而且我已经全部记录了控制台。当我在 getProducts 操作创建器和服务器“/products”路由中放置日志时,Safari 不会在浏览器中显示操作创建器控制台日志。但是,heroku 日志显示 path="/products" 正在被命中,而不是 path="/static/css/main.etc.," 或 path="/static/js/main.etc.," 文件.
我研究过和/或尝试过的事情:
手动刷新或写入时,React-router url 不起作用
https://github.com/ReactTraining/react-router/issues/4727
React Routing 在本地机器上工作,但在 Heroku 上不工作
https://github.com/ReactTraining/react-router/issues/4671
这是一个精简的样本。注意:我同时使用来代理我的请求。
// 客户端/index.js
import React from 'react'
import ReactDOM from 'react-dom'
import './styles/index.css';
import App from './App'
import registerServiceWorker from './registerServiceWorker'
import { Router } from 'react-router-dom'
import { Provider } …Run Code Online (Sandbox Code Playgroud) 根据react router最新的v6.0.0-alpha.5版本,history prop已被删除: https: //github.com/ReactTraining/react-router/releases/tag/v6.0.0-alpha.5
删除了 <Router History> 属性,并将设置/拆除侦听器 (history.listen) 的责任移至包装器组件(<BrowserRouter>、<HashRouter> 等)中。<Router> 现在是一个受控组件,它只是为应用程序的其余部分设置上下文。
使用钩子在反应上下文中导航很简单useNavigate。
但是,删除历史记录会如何影响以编程方式在反应上下文之外进行导航?例如,当我们不再可以传递历史对象时,我们如何保持历史同步,以便从 redux 或 axios/http 拦截器等内部导航?当前 V5 实现: https: //reacttraining.com/react-router/web/api/Router
或者,从 v6 开始,目标是仅依赖于 React 组件内的导航?