我正在尝试在一个新项目中使用所有这三个。我想使用react-router
.
使用“开箱即用”设置,当我从例如开始localhost:3000/
然后单击例如Link
路由到signup
页面时,它可以正常工作。但是当我尝试输入时localhost:3000/signup
,它说没有路线(因为没有使用 Rails 创建的路线)。
我怎样才能整合这个?
我正在尝试在一个新项目中使用所有这三个。我想使用react-router
.
使用“开箱即用”设置,当我从例如开始localhost:3000/
然后单击例如Link
路由到signup
页面时,它可以正常工作。但是当我尝试输入时localhost:3000/signup
,它说没有路线(因为没有使用 Rails 创建的路线)。
我怎样才能整合这个?
您可以通过使用react-router-dom
withHashRouter
而不是来实现这一点BrowserRouter
。
处理这种情况的正确解决方案是在 Rails config/routes.rb 文件中定义所有 React 路由。
问题是 Rails 必须知道 React 正在处理的路由,否则它会尝试接管并处理您的应用程序的路由。
所以,想象一下你的 React 的前端控制器路由是这样的:root 'pages#index'
并且在 config/routes.rb 中看起来像这样:
Rails.application.routes.draw do
root 'pages#index'
end
所以,为了让你的 React 路由正常工作,而不让 Rails 干扰,你可以这样做:
Rails.application.routes.draw do
root 'pages#index'
get 'admin', to: 'pages#index'
get 'admin/dashboard', to: 'pages#index'
get 'admin/user', to: 'pages#index'
end
您只需将所有 React 路由重定向到前端控制器“pages#index”。这将完成这项工作。