我使用create-react-app创建客户端代码,并使用“ / api”路由创建了快速后端。我必须添加"proxy": "http://localhost:8080"
(express正在监听端口8080)来响应应用程序。为了进行测试,我在App的fetch('/api/users')
中调用了componentDidMount
,它更新了状态,状态显示在渲染器中。
一切正常,我决定添加<BrowserRouter>
,一切似乎都正常,但是随后我注意到了一个令人烦恼的问题:如果我手动转到localhost:3000/api/users
,则会得到NotFoundPage(我猜是可以预期,因为react-router正在处理路由,并且该页面不知道),但是如果我在浏览器中按返回按钮,这导致我返回localhost:3000
,我得到的字符串实际上就是我的{ {1}}文件应放在API调用的结果位置。基本上,当我手动转到index.html
并使用浏览器的后退按钮返回到localhost:3000/api/users
时,获取index.html
会返回localhost:3000/api/users
。
如果我不使用浏览器的后退按钮,而是手动从localhost:3000
转到localhost:3000/api/users
,一切正常。如果我转到localhost:3000
之类的不同路线并使用“后退”按钮返回首页,一切正常。使用返回按钮从localhost:3000/whatever
到localhost:3000/api/users
时,这似乎只是个问题。
我也尝试使用axios,但是同样的问题。