Rails 5.1 + Webpacker + React-router

Saya mencoba menggunakan ketiganya dalam proyek baru. Saya ingin menangani perutean menggunakan react-router.

Dengan pengaturan 'di luar kotak', ini berfungsi dengan baik ketika saya memulai misalnya. localhost:3000/ lalu klik misalnya Link merutekan ke signup halaman. Tetapi ketika saya mencoba memasukkan localhost:3000/signup dikatakan tidak ada rute (karena tidak ada rute yang dibuat menggunakan Rails).

Bagaimana saya bisa mengintegrasikan ini?


person Ancinek    schedule 11.07.2017    source sumber


Jawaban (2)


Anda dapat mencapainya dengan menggunakan react-router-dom dengan HashRouter, bukan BrowserRouter.

person elquimista    schedule 25.07.2017

Solusi yang tepat untuk menangani situasi ini adalah dengan mendefinisikan semua rute React Anda di dalam file Rails config/routes.rb.

Masalahnya adalah Rails harus tahu tentang rute yang ditangani oleh React, jika tidak, Rails akan mencoba mengambil alih dan menangani perutean untuk aplikasi Anda.

Jadi, bayangkan rute pengontrol depan untuk React Anda adalah ini: root 'pages#index' dan terlihat seperti ini di config/routes.rb:

Rails.application.routes.draw do
    root 'pages#index'
end

Jadi, agar rute React Anda berfungsi dengan baik, tanpa membiarkan Rails mengganggu, Anda dapat melakukan ini:

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

Anda cukup mengalihkan semua rute React Anda ke pengontrol depan 'pages#index'. Itu akan berhasil.

person MarkSkayff    schedule 03.06.2020