laravel和react-router的网址路径错误

时间:2018-11-29 17:09:07

标签: php reactjs laravel react-router-v4

我遇到了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>

2 个答案:

答案 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请求的开头都用一个/修复了它。