url 路径错误 laravel 和 react-router

error with url path with laravel and react-router

我遇到了 React 路由器和 laravel 的路径问题。我想走这条路: /users/create 。它在 React 路由器上渲染得很好,但是当我在这条路径上并且我刷新页面时,我得到一个 404 并由于中间件而重定向。为什么会这样?

** 注意:当我到处使用 users-create 时 users/create 它有效,但不是我想要的。

代码:

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>

当您点击刷新时,url 路径直接转到 Laravel,后者根本不知道该路径。这个路径只有 React 知道。

要解决此问题,您需要做的就是告诉 Laravel /users/create 是一个 React 路径,因此在遇到这样的路径时 Laravel 需要将请求转发到index.html.

这是所有框架的通病。由于我不是 PHP 人,因此无法提供代码示例。

但是,您可以考虑参考这个答案,它适用于 Spring、Java 和 Angular:

幸运的是我解决了这个问题。当我点击刷新或登录时,我通过 axios 在此端点上发出 http 请求,例如 axios('api/auth/check') 。问题是,axios 每次都在捕获 url 并命中相对路径 (api/..),因此它命中了错误的端点。我在每个 axios 请求的开头用一个 / 修复了它。