Rails 5.1 + Webpacker + React-маршрутизатор

Я пытаюсь использовать все эти три в новом проекте. Я хотел обрабатывать маршрутизацию с помощью react-router.

С настройкой «из коробки» все работает нормально, когда я начинаю, например. localhost:3000/, а затем нажмите, например, Link маршрутизация на signup страницу. Но когда я пытаюсь ввести localhost:3000/signup, он говорит, что маршрута нет (поскольку такой маршрут не создан с помощью Rails).

Как я могу интегрировать это?


person Ancinek    schedule 11.07.2017    source источник


Ответы (2)


Вы можете добиться этого, используя react-router-dom с HashRouter вместо BrowserRouter.

person elquimista    schedule 25.07.2017

Правильным решением в этой ситуации является определение всех ваших маршрутов React в файлах Rails config/routes.rb.

Дело в том, что 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». Это сделает работу.

person MarkSkayff    schedule 03.06.2020