Интеграция фреймворков JavaScript с Rails — не всегда простая задача, у Rails сильная внутренняя культура, которая может противоречить установке больших фреймворков JavaScript.

React-rails — это жемчужина, которая добавляет помощников и методы для облегчения разработки с помощью React, мы часто ее используем, и она создает хороший мост между React и Rails.

Чтобы установить гем, просто добавьте его в Gemfile:

гем «реагирующие рельсы»

Встроенный генератор для настройки проекта создает необходимые файлы, в том числе assets/javascripts/components.js, который используется для загрузки всех компонентов.

$ rails g реагировать: установить

Фреймворк загружает компоненты из component.js, а затем отображает их в JavaScript.

Если вы хотите отображать компонент на стороне сервера, вы можете добавить к параметрам prerender: true. Однако попытка выполнить предварительный рендеринг компонента имеет некоторые недостатки: Rails должен создать движок JavaScript для предварительного рендеринга компонента, который задерживает рендеринг, поэтому лучше использовать его только во время тестов или с кэшируемыми элементами.

Тестирование компонентов с помощью RSpec

Самый простой способ протестировать компоненты — просто создать контроллер, который будет предварительно отображать на стороне сервера любой компонент. Полученный результат затем можно использовать в тестовом коде.

И теперь рендерить компонент с помощью RSpec стало проще:

Не забудьте указать все компоненты в файле assets/components/components.js, так как это будет единственный файл, который будет загружен с этим контроллером.

Вывод

До сих пор гем react-rails очень помогал нам в Stklog использовать rails для большей части проекта и React только для необходимых частей. Мы не столкнулись с большими проблемами с ним. Я, вероятно, добавлю еще один пост о том, как выполнить некоторые преобразования перед использованием компонента в тесте (например, щелчок или зависание).