reactjs - 使用 Laravel-react 的单页应用程序
问题描述
我是第一次开发 laravel-react js 项目。选择 react 的原因是为了创建单页应用程序(SPA)。
要使用 react 设置我的 laravel 项目,我正在关注这篇文章
为了创建 SPA,我通过在我的 web.php 中写入这一行来为每个第一级 url 返回相同的视图
Route::view('/{path?}', 'index');
我还在我的反应组件中创建了一些路线,如下所示
<Switch>
<Route exact path="/" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/signup" component={Signup}/>
</Switch>
现在的问题是,当更改 url 时,它会用不同的组件刷新相同的视图。
我只是想在不刷新整个页面的情况下针对 url 呈现不同的组件,否则 SPA 的意义何在。
谁能告诉我满足我要求的正确方法,或者就像 Laravel 一样并做出反应。
解决方案
使用路由器提供的链接组件
默认情况下,常规a
标签总是会导致刷新。
您不能仅使用常规 a 标签链接到另一个页面,您必须使用路由器中的 Link 组件。如果是反应路由器,这里是链接
<Link
to={{
pathname: "/courses",
search: "?sort=name",
hash: "#the-hash",
state: { fromDashboard: true }
}}
/>
您还可以使用 useHistory 挂钩务实地进行路由。更详细的版本可以在这里找到
import { useHistory } from "react-router-dom";
function HomeButton() {
let history = useHistory();
// use history.push('/some/path') here
};
推荐阅读
- android - 获取推送通知的新令牌火力库 (FCM)
- java - 需要更新java中的toString方法
- c++ - OpenCV:isOpened() 总是失败
- php - buddypress mb_substr 不适用于 bp_activity_content_body()
- html - 仅当 post.category == 'textual' 不起作用时才包含 disqus.html
- tcp - TCP:将重传设置为零
- ruby - MiniMagick 调整图像大小
- django - 如何将输入字段类(引导类)“form-control”添加到 {{form.as_p}}?
- wolfram-mathematica - 定点迭代 Mathematica
- ios - ViewController segue to Nav Controller 立即弹出 Nav Controller 并返回到 ViewController