reactjs - 在 create-react-app 中包含静态 HTML 文件夹/文件
问题描述
我将 create-react-app 与 react-router-dom 模块一起用于我的 React 应用程序。我有一个包含我希望反应应用程序呈现的静态 HTML/CSS/JS 的子文件夹。它可以像让路由器显示 /static/index.html 一样简单。
我四处搜索,似乎没有关于如何使用 create-react-app 来实现这一点的明确答案。任何建议表示赞赏。
解决方案
为了在您的 react 应用程序中使用路由,您必须执行以下操作:
设置
- 通过打开终端/cmd 来安装 react,转到当前的应用程序目录,然后输入以下命令:
npm i react-router-dom
. 点击回车并安装。 - 接下来,通过在代码开头添加以下行,转到
index.js
文件并导入:BrowserRouter
import { BrowserRouter } from 'react-router-dom'
然后将您的渲染内容更改为如下所示:
ReactDOM.render( , document.getElementById('root') );
那是做什么的,它基本上告诉反应App
将有路由支持。
- 现在转到您的
app.jsx
文件并导入以下内容:import { Route, Switch } from 'react-router-dom';
. (稍后我会解释它们都是什么。)
现在已经设置了幕后,我们可以开始向 out app 添加路由或路径。
申请路线
- 转到您的
app.jsx
文件并在该render
部分而不是仅在其中包含组件,让我们制作一条路线。(路由仅表示 url 路径。) components
无论 url 路径是什么,你都可以让它一直存在。为了做到这一点,只是不要将这些项目作为路线。有关更多说明,请参见下面的示例。- 要创建路由,只需添加以下代码:
<Route path="/myPath" component={myComponent} />
myComponent
将在用户转到 时显示www.myWebsite.com/myPath
。
这样做的问题是,假设您有一条到 的路线/myPath
,还有一条到/
(主页,即www.myWebsite.com/
)的路线,那么当用户导航到 时www.myWebsite.com/myPath
,主页也会显示。为了防止这种情况发生,只需将所有路由包装在一个<Switch></Switch>
组件中。
所以渲染部分的最终代码app.jsx
将如下所示:
return (
<div className="App">
<div className="bg" />
// Will always show `Header` no matter what the rout is.
<Header/>
<Switch>
<Route path="/about" component={about} />
<Route path="/" exact component={WelcomContent} />
</Switch>
// Will always show `Footer` no matter what the rout is.
<Footer />
</div>
);
希望这可以帮助。如果您还有问题,请告诉我。
推荐阅读
- unix - Unix sed 从起始模式读取到文件结尾
- javascript - 无法使用 MyChart 功能
- generics - 闭包如何根据它们需要实现的特征来推断它们的类型?
- c++ - 使用基于范围的循环返回向量中项目的地址
- verilog - 在 topmodule 中制作子模块会导致验证器错误
- python - 如何制作一个包含从 C++ 构建的可执行文件的包?
- excel - 使用vba从Access数据库中提取到excel
- go - 使用 Cassandra GOCQL 驱动程序 (Golang) 确定页面状态
- docker - 在 dockerfile 与 CI 上运行构建和测试?
- c++ - MSVC 19 删除继承的构造函数