使用Laravel时从反应路由器中删除哈希

时间:2015-09-16 17:03:31

标签: laravel reactjs laravel-routing

当我们使用Laravel时,有没有办法从反应路由器中删除#。目前我有一个Laravel应用程序,我使用其中一个刀片视图作为SPA,它已分配给Route ::(' /')。我无法想出从反应路由器端删除哈希。历史记录或HTML5push状态设置无效。

我是否需要从NGINX端进行配置?

非常感谢帮助。

2 个答案:

答案 0 :(得分:4)

您需要告诉Laravel的路由将所有相关请求路由到您的React刀片视图。

因此,在routes.php文件的末尾,您应该添加如下内容:

.entry-content {
 padding:0px;
}

或者,如果您想使用控制器并且能够缓存您的路线。:

Route::any('{path?}', function () {
    return view('react');
})->where('path', '.+');

这可以解决服务器方面的问题,我假设你的帖子已经处理完了前端的东西了!

以防万一,对于1.0.0-rc1版本的React路由器,你会在javascript代码的顶部附近有这样的东西:

Route::any('{path?}', 'ReactController@index')->where('path', '.+');

您稍后会像以下那样渲染您的路由器:

import createBrowserHistory from 'history/lib/createBrowserHistory';

let history = createBrowserHistory();

对于您似乎正在使用的版本0.13.x,您应该在Router.run函数上添加Router.HistoryLocation参数。例如:

<Router history={history}>
    <Route path="/" component={Body}>
        <IndexRoute component={Home} />
        <Route path="about" component={About}>
        </Route>
    </Route>
</Router>

相关文档在https://github.com/rackt/react-router/blob/0.13.x/doc/04%20Locations/HistoryLocation.md,不幸的是它们似乎没有提供示例。

答案 1 :(得分:0)

试试这个 import BrowserRouter from "react-router-dom/BrowserRouter";

<BrowserRouter>