Rails с React — одно репозиторий

Часть 2 из 3. Интеграция React Router

Подведение итогов

В первой части этой серии мы рассмотрели настройку React в качестве слоя представления.

Весь код этой серии находится по адресу: https://github.com/oddballio/rails-with-react.

Введение

Теперь, когда у нас есть подготовленный слой представления, теперь нам нужно иметь возможность посещать множество разных страниц в нашем приложении, каждая из которых имеет свое назначение. Например:

  • домашняя страница
  • страница, которая отображает список сообщений
  • страница с формой для создания нового поста

Чтобы создать несколько компонентов React с несколькими уникальными URL-адресами, мы интегрируем React Router.

Создавать и импортировать новые компоненты

Давайте создадим компонент класса для представления каждой из этих страниц с некоторым шаблонным содержимым.

1. Создать app/javascript/components/Home.js

2. Создайте app/javascript/components/Posts.js

3. Создайте app/javascript/components/NewPost.js

4. Импортируйте компоненты в App.js

Установить и импортировать зависимости

1. Установите React Router и react-router-dom

$ yarn add react-router
$ yarn add react-router-dom

2. В index.js импортируйте соответствующие компоненты пакета

Настройка маршрутизатора и маршрутов

Давайте интегрируем компоненты из этих новых пакетов.

1. В index.js вместо передачи компонента App мы будем передавать компонент Router пакета.

2. В компонент Router мы добавим компонент Route, который устанавливает корневой путь, с App.js в качестве нашего корневого компонента.

Создайте маршруты в приложении React

Поскольку App.js установлен в качестве корневого компонента для маршрутизатора, он будет содержать все отдельные маршруты для каждого компонента.

1. В App.js импортируйте компоненты Route и Switch из react-router-dom.

2. В App.js установите все уникальные маршруты в компоненте Switch.

Маршрут Umbrella Rails для всех маршрутов React

Нам нужно создать полный маршрут, который соответствует любому из потенциальных маршрутов, которые могут исходить из нашего приложения React, и направить их в наше действие pages_controller#index. Это действие, которое отображает наше приложение React.

Важно! Этот маршрут match должен быть последним маршрутом в routes.rb, чтобы гарантировать, что он по ошибке не поглощает другие маршруты.

1. В routes.rb создайте полный маршрут

2. Запустите сервер rails с помощью rails s

3. В отдельной вкладке запустите скрипт bin/webpack-dev-server

$ bin/webpack-dev-server

Это настраивает перезагрузку в реальном времени, которая является стандартной для базового приложения React.

4. Посетите http://localhost:3000

Вы должны увидеть «Главную страницу»

5. Посетите http://localhost:3000/posts

Вы должны увидеть «Страницу сообщений»

6. Посетите http://localhost:3000/new_post

Вы должны увидеть «Страница NewPost»

Дальнейшие шаги

В этой серии есть еще один мастер-класс:

Часть 3 из 3: Обработка запросов между React и Rails