Автор оригинала: Mikias Abera.
Я только что начал изучать реагирование после 2 лет угловых, и я удивлен тем, насколько весело реагирует и насколько удивительнее сообщество и поддерживающие пакеты. Я также огромный поклонник Кристалл и Lucky Framework Итак, что может быть более удивительным, чем использовать эти инструменты вместе?
В этом посте я собираюсь показать вам, как вы можете добавить компоненты React в свои счастливые приложения с Maravel Mix и Lucky-React Отказ
Демонстрация
Чтобы увидеть код для этой функции, вы можете клонировать Lucky_Demo
репо и оформить заказ Lucky-React
ветка.
git clone git@github.com:mikeeus/lucky_demo.git cd lucky_demo bin/setup git checkout lucky-react
В противном случае вы можете следить со свежем счастливым приложением, запустив Lucky init app_name
Отказ
Maravel Mix.
Поскольку мы будем использовать JSX для записи компонентов RACT, нам нужно обновить конфигурацию Laravel Mix, чтобы правильно компилировать наш JavaScript. Maravel Mix позволяет легко настроить его, изменив наши mix.js ()
Вызов в конфигурации в mix.reach ()
Отказ
// webpack.mix.js mix // ... .react("src/js/app.js", "public/js") // instead of .js(...)
Babel Plugin: Transform-класс – свойства (необязательно)
Для того, чтобы использовать функции стрелки и другой потрясающий синтаксис, нам нужен Babel’s Преобразование-классовые свойства
плагин. Maravel Mix не приходит с этим плагином по умолчанию, поэтому нам нужно установить его.
пряжа добавьте Babel-плагин-преобразование-класс-свойства
Тогда мы добавляем .babelrc
Файл в корне нашего проекта со следующим контентом:
{ "plugins": [ "transform-class-properties" ] }
Это будет забрано смесью автоматически! Наркотик.
Написание компонентов реагирования
Теперь, когда у нас есть поддержка JSX, мы можем написать компоненты и импортировать их в нашу app.js
файл. Для организации я положил свои компоненты в SRC/JS/Компоненты/
каталог.
Вот Граничит
Компонент и упрощенная версия Чат
Компонент, используемый в демонстрационном приложении.
// src/js/components/Bordered.jsx import React from 'react'; export class Bordered extends React.Component { render() { return ({this.props.children}) } }
// src/js/components/Chat.jsx import React from 'react'; import { ChatInput } from './ChatInput'; import { Message } from './Message'; export class Chat extends React.Component { ... render() { return () } }Conversation
{ this.state.messages.map(message =>) }
Luckyraye.
Чтобы разрешить рендеринг компонентов React в счастливых приложений, которые я создал модуль NPM, называемый Lucky-React это добавляет слушателей событий на Turbolinks: нагрузка
и Turbolinks: перед визуализацией
Чтобы установить и размонтировать компоненты, используя [Data-React-Class]
и [Data-React-ropps]
атрибуты.
Я также создал хрустальный осколок, называемый Lucky_react С помощью помощников методов рендеринга элементов с этими атрибутами в ваших счастливых страницах.
Lucky-React NPM модуль : Находит и отображает компоненты реагирования на ваши страницы, используя [Data-React-Class]
и [Data-React-ropps]
атрибуты. Lucky_reach Crystal Module : Добавляет помощники методов рендеринга элементов с правильными атрибутами, чтобы они могли быть найдены Lucky-React
Отказ
Давайте использовать их сейчас, чтобы сделать наши Чат
и Граничит
Компоненты на нашей домашней странице.
Сначала установите модуль NPM.
yarn add lucky-react
Затем добавьте осколок на Shard.yml
и беги осколки
Отказ
# shard.yml ... dependencies: ... lucky_react: github: mikeeus/lucky_react
Регистрация компонентов реагирования
Для того, чтобы Luckyrage
Чтобы сделать наши компоненты, нам нужно импортировать и зарегистрировать их в нашем app.js
файл.
// src/js/app.js ... import LuckyReact from "lucky-react"; import { Chat } from './components/Chat'; import { Bordered } from './components/Bordered'; LuckyReact.register({ Chat, Bordered });
Это все, что нам нужно сделать! Luckyrage
создаст слушателей событий на Turbolinks: нагрузка
и Turbolinks: перед визуализацией
Чтобы установить и размонтировать эти компоненты, если он найдет их на странице.
Обратите внимание, что нам нужно только зарегистрировать Чат
и Граничит
Поскольку они являются единственными корневыми компонентами. ChatInput
и Сообщение
вложены в Чат
и будет обрабатываться автоматически реагированными.
Рендеринг компонентов на страницах
Теперь на наших страницах мы можем использовать Luckyrage
Хрустальный модуль для добавления элементов, которые ссылаются на наши компоненты, чтобы они могли быть представлены.
# src/pages/home/index_page.cr require "lucky_react" class Home::IndexPage < GuestLayout include LuckyReact # include the module def content react "Bordered" do # call react h1 "React Component", style: "text-align: center;" end messages = [ { id: 1, sender: "me", text: "Hi" }, { id: 2, sender: "Chatbot", text: "Hi! How can I help?" }, { id: 3, sender: "me", text: "Can you tell me the time?" }, { id: 4, sender: "Chatbot", text: "Sure it's #{Time.now}" } ] react "Chat", { messages: messages } # with props end end
Мы можем рендерировать компоненты без Lucky_react
Shard, добавив [Data-React-Class]
и [Data-React-ropps]
Отказ Вышеуказанный пример тогда будет написан так:
# src/pages/home/index_page.cr class Home::IndexPage < GuestLayout def content div "data-react-class": "Bordered" do h1 "React Component", style: "text-align: center;" end messages = [ { id: 1, sender: "me", text: "Hi" }, { id: 2, sender: "Chatbot", text: "Hi! How can I help?" } ] div "data-react-class": "Chat", "data-react-props": ({ messages: messages }).to_json end end
Если вы запустите приложение сейчас и посетите домашнюю страницу, вы увидите работу компонента чата!
Присоединяйтесь к нам
Я надеюсь, что вам понравилось это руководство и нашел его полезным. Присоединяйтесь к нам на Lucky Gitter Channel Чтобы остаться в курсе в рамках или Оформить заказ Документы Для получения дополнительной информации о том, как принести свою идею приложения в жизнь с Lucky.