我遇到了React Router和laravel的路径问题。我想转到以下路径:/ users / create。它使用react router可以很好地渲染,但是当我在此路径中并刷新页面时,由于中间件,我得到了404并重定向。为什么会这样?
**注意:当我到处使用用户时-创建用户/创建它可以但不是我想要的。
代码:
AppRouter.js
<Router history={history}>
<div className="wrapper">
<Sidebar/>
<div className="main-panel">
<Navbar/>
<Switch>
<Route exact path='/dashboard' component={Dashboard} />
<Route exact path='/categories' component={Category} />
<Route exact path='/users/create' component={UserCreate} />
<Route exact path='/users' component={User} />
<Route component={NotFound}/>
</Switch>
<Footer/>
</div>
</div>
</Router>
Routes.php
Route::view('/dashboard', 'main')->middleware('auth', 'preventHistory');
Route::view('/categories', 'main')->middleware('auth', 'preventHistory');
Route::view('/users/create', 'main')->middleware('auth', 'preventHistory');
Route::view('/users', 'main')->middleware('auth', 'preventHistory');
Sidebar.js
<li className="nav-item ">
<NavLink exact to='/users' activeClassName='active'>
<span className="sidebar-normal">y</span>
</NavLink>
</li>
<li className="nav-item ">
<NavLink exact to='/users/create' activeClassName='active'>
<span className="sidebar-normal">x</span>
</NavLink>
</li>
答案 0 :(得分:0)
当您单击刷新时,URL路径直接转到Laravel,Laravel根本不知道该路径。只有React才知道此路径。
要解决此问题,您需要做的就是告诉Laravel /users/create
是React路径,因此在遇到这种路径时Laravel需要将请求转发到index.html。
这是所有框架中的常见问题。由于我不是PHP人士,所以我无法给您提供代码示例。
但是,您可以考虑参考针对Spring,Java和Angular的答案:https://stackoverflow.com/a/47926065/1235935
答案 1 :(得分:0)
我很幸运地发现了这个问题。当我单击刷新或登录时,我通过此端点上的axios发出http请求,例如axios('api / auth / check')。问题是,axios每次都在捕获URL并击中相对路径(api / ..),因此它击中了错误的端点。我在每个axios请求的开头都用一个/修复了它。