[RUBY] [Mit Backtricks] So stellen Sie React to the simple Rails vor

Die Rails + React- oder Vue-Konfiguration ist in modernen Webunternehmen sehr beliebt. Dieses Mal werden wir React to Rails einführen, das mit der Einführung von "hook" an Dynamik gewinnt.

Ausführungsumgebung

ruby 2.6.3p62 Rails 6.0.2.2

Installieren Sie Gem

Sie müssen Gem installieren, um "Helper" verwenden zu können. Fügen Sie der Gemfile und der Bundle-Installation Folgendes hinzu

Gemfile


gem 'react-rails'
#Die Rails 5-Serie hat außerdem Folgendes hinzugefügt
gem 'webpacker'

Installieren Sie React

Führen Sie den folgenden Befehl im Terminal aus.

terminal


$ bin/rails wepacker:install:react
$ bin/rails g react:install

#Führen Sie in der Rails 5-Serie außerdem Folgendes aus
$ bin/rails webpacker:install

Dann werden die folgenden Änderungen hinzugefügt.

** App / Javascript / Komponenten / Verzeichnis hinzugefügt ** Hier werden Reaktionsdateien erstellt.

** Verarbeitung zum Einbetten von React in app / javascript / packs / application.js hinzugefügt **

app/javascript/packs/application.js


//Der folgende Code wird am Ende hinzugefügt
// Support component names relative to this directory:
var componentRequireContext = require.context("components", true);
var ReactRailsUJS = require("react_ujs");
ReactRailsUJS.useContext(componentRequireContext);

** Serverseitiges Rendering (SSR) zu app / javascript / packs / server_rendering.js hinzugefügt **

app/javascript/packs/server_rendering.js


//Der folgende Code wird am Ende hinzugefügt
// By default, this pack is loaded for server-side rendering.
// It must expose react_ujs as `ReactRailsUJS` and prepare a require context.
var componentRequireContext = require.context("components", true);
var ReactRailsUJS = require("react_ujs");
ReactRailsUJS.useContext(componentRequireContext);

ruby:app/views/layouts/applicationi.html.erb


<%= javascript_pack_tag 'application' %>

Die Vorbereitung ist abgeschlossen.

Erstellen einer Komponente

Erstellen Sie als Test eine Komponente namens HelloWorld. Führen Sie den folgenden Befehl aus.

terminal


$ bin/rails g react:component HelloWorld greeting:string
Running via Spring preloader in process 12477
      create  app/javascript/components/HelloWorld.js

Begrüßung: Zeichenfolge ist der Name bzw. Typ des Arguments. Dann wird die folgende Datei generiert.

app/javascript/components/HelloWorld.js


import React from "react"
import PropTypes from "prop-types"
class HelloWorld extends React.Component {
  render () {
    return (
      <React.Fragment>
        Greeting: {this.props.greeting}
      </React.Fragment>
    );
  }
}

HelloWorld.propTypes = {
  greeting: PropTypes.string
};
export default HelloWorld

Rails vorgestellt

Fügen Sie den folgenden Code zu dem Teil der Rails-Erb-Datei hinzu, in dem Sie die Komponente anwenden möchten, und fertig! <%= react_component("HelloWorld", { greeting: "Hello from react-rails." }) %>

Tricks!

Der Code, der bei der Installation von React automatisch zu "app / javascript / packs / application.js" hinzugefügt wird, ist ** das Lesen des React-Codes auf allen Seiten **, sodass er auf Seiten angewendet werden kann, auf denen React nicht installiert ist. Und die Antwort wird reduziert. Löschen Sie den automatisch hinzugefügten Teil ** nur auf der Seite, auf der React installiert ist ** <%= javascript_pack_tag 'server_rendering.js' %> Sie können dies vermeiden, indem Sie hinzufügen.

Recommended Posts

[Mit Backtricks] So stellen Sie React to the simple Rails vor
[Rails] Wie man Kaminari mit Slim einführt und das Design ändert
So installieren Sie jQuery in Rails 6
So führen Sie React und Rails auf demselben Server aus
Einführung in React to Rails mit React-Rails
[Schienen] Verwendung der Kartenmethode
[Rails 5.x] So führen Sie kostenlose Schriftarten ein
So erstellen Sie eine Rails 6-Umgebung mit Docker
So dekorieren Sie CSS auf Rails6 form_with (Hilfs-) Optionsfeldern
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
Ich möchte ein Komitee mit Rails vorstellen, ohne zu schmutzig zu werden
[Rails] So wenden Sie das in der Hauptanwendung verwendete CSS mit Administrate an
[Rails] So bestimmen Sie das Ziel anhand von "Rails-Routen"
So erstellen Sie eine API mit GraphQL und Rails
[Rails] So erstellen Sie eine Umgebung mit Docker
So erstellen Sie die einfachste Blockchain in Ruby
Versuchen Sie, das gemeinsame Layout mit Schienen zusammenzufassen
So überprüfen Sie Rails-Befehle im Terminal
[Rails] Lesen der vom Bildschirm hochgeladenen XML-Datei im Hash-Typ
[Schienen] So registrieren Sie mehrere Datensätze in der Zwischentabelle mit einer Zuordnung von vielen zu vielen
[Rails] So bedienen Sie die in der Hauptanwendung verwendete Hilfsmethode mit Administrate
Wie schreibe ich Rails
Einführung von Vue.js in Rails
So deinstallieren Sie Rails
So ändern Sie die Aktion mit mehreren Senden-Schaltflächen
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
So pushen Sie mit Rails entwickelte Apps an Github
So löschen Sie ein mit Rails erstelltes new_record-Objekt
[Ruby on Rails] So ändern Sie den Spaltennamen
So generieren Sie manuell ein JWT mit Knock in Rails
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
[Rails] So ändern Sie den Spaltennamen der Tabelle
Organisierte schrittweise Interaktion mit dem JDK
[So fügen Sie ein Video mit Rails in haml ein]
[Rails] Umgang mit URL-Änderungen nach dem Rendern
Abfragen von Arrays in jsonb mit Rails + postgres
[Rails] So erhalten Sie den Inhalt starker Parameter
Süchtig nach dem Webpacker, der standardmäßig mit Rails 6 geliefert wird
[Schienen] So zeigen Sie Bilder in der Ansicht an
[Grobe Erklärung] So trennen Sie den Betrieb der Produktionsumgebung und der Entwicklungsumgebung mit Rails
[Rails] Lösung, wenn bei Verwendung von Capybara mit Rspec der Fehler "undefined method` visit '" angezeigt wird
So generieren Sie automatisch ein ER-Diagramm bei der Migration mit Rails 6
So machen Sie einen Screenshot mit dem Android Studio-Emulator
[Schienen] Wie poste ich Bilder?
Festlegen von Umgebungsvariablen bei Verwendung von Payjp mit Rails
[Rails] Verwendung von Enum
Zurück zum Anfang Button nur mit Javascript gemacht (Rails, Haml)