javascript - 如何使用react-router处理生产构建中的刷新

标签 javascript reactjs webpack react-router webpack-dev-server

我有一个使用 react 路由器的应用程序。我已经设置了我的开发环境来使用它,当我想刷新页面或服务器自行完成时,我没有问题,但是当我进行生产构建时。如果任何用户使用应用中的刷新按钮,将会出现 404 错误。

我知道在服务器中(我的产品版本将在 ISS srv 中),应用程序尝试访问的 React 路由器创建的路由不存在,那么我该如何解决这个问题?
我需要做什么以及如何做?
我对此还很陌生。

感谢您的时间和帮助!

最佳答案

我将尝试解释 react 路由器如何管理您的应用程序的状态。

假设您有以下路由器

<Router>
   <Route to="/" component={Home}>
     <Route to ="/about" component={About} />
    </Route>
<Router>

假设您位于应用程序的主页,即 /。现在,假设使用主页上的 Link 导航到 /about url。这将由您的 react 路由器提供服务。所以一切正常。

现在,当您位于 /about 路线时,您会刷新页面。现在,网络浏览器像任何页面请求(无论是否是单页面应用程序)都会向您的后端服务器发送请求以获取页面。因此,您需要在后端配置路由以用于第一页加载。

现在你必须使用 webpack 来编译你的 React 组件并获得捆绑输出,对吗?你把这个放在你的html文件里了吗?现在,所有路由仅提供此 html 文件。

当您拥有已编译的 JS 文件时,当页面在 react-router 上呈现时,会自动呈现页面。

现在配置路由有多种方法。其中之一是在后端添加所有路由,这些路由使用包含您的 React 代码的已编译 JavaScript 呈现相同的 html 文件。另一种方法是使用 nginx 之类的东西并仅从那里返回 html。

关于javascript - 如何使用react-router处理生产构建中的刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41243120/

相关文章:

带有 2 个参数的 javascript 函数不起作用

javascript - 模拟单选按钮的引导下拉复选框?

javascript - 通过弹出窗口中的 .load 加载页面

javascript - 为 React Native Web 项目使用适当的转译器

javascript - 是否有一个 eslint 插件可以检查 'npm prune --production' 之后的依赖关系?

javascript - webpack babel 如果我不使用 import/require 如何复制转译文件

javascript - 在 Node.js 和 node-webkit 中打开目录

javascript - 如何将数据从 child 传递给 parent ?

reactjs - 如何在 react 中的标签路由器中没有标签的情况下进行路由?

javascript - 如果我在 throw props 中调用函数,useEffect 会显示警告吗?