[RUBY] [Avec des astuces de retour] Comment présenter React aux rails les plus simples

La configuration Rails + React ou Vue est très populaire dans les entreprises Web modernes. Cette fois, nous présenterons React to Rails, qui prend de l'ampleur avec l'introduction de hook.

Environnement d'exécution

ruby 2.6.3p62 Rails 6.0.2.2

Installer Gem

Vous devez installer Gem pour utiliser Helper. Ajoutez ce qui suit au Gemfile et à l'installation du bundle

Gemfile


gem 'react-rails'
#La série Rails 5 a également ajouté les éléments suivants
gem 'webpacker'

Installez React

Exécutez la commande suivante dans le terminal.

terminal


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

#Dans la série Rails 5, exécutez également ce qui suit
$ bin/rails webpacker:install

Ensuite, les modifications suivantes seront ajoutées.

** Ajout du répertoire app / javascript / components / ** Les fichiers React seront créés ici.

** Ajout du traitement pour intégrer React dans app / javascript / packs / application.js **

app/javascript/packs/application.js


//Le code suivant est ajouté à la fin
// Support component names relative to this directory:
var componentRequireContext = require.context("components", true);
var ReactRailsUJS = require("react_ujs");
ReactRailsUJS.useContext(componentRequireContext);

** Ajout du rendu côté serveur (SSR) à app / javascript / packs / server_rendering.js **

app/javascript/packs/server_rendering.js


//Le code suivant est ajouté à la fin
// 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' %>

La préparation est terminée.

Créer un composant

En guise de test, créez un composant appelé HelloWorld. Exécutez la commande suivante.

terminal


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

salutation: string est respectivement le nom et le type de l'argument. Ensuite, le fichier suivant sera généré.

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

Introduction aux rails

Ajoutez le code suivant à la partie où vous souhaitez appliquer le composant dans le fichier rails ʻerb, et l'installation est terminée! <%= react_component("HelloWorld", { greeting: "Hello from react-rails." }) %>`

Des trucs!

Le code qui est automatiquement ajouté à ʻapp / javascript / packs / application.jslorsque React est installé est ** le processus de lecture du code React sur toutes les pages **, donc il s'applique également aux pages sur lesquelles React n'est pas installé. Et la réponse sera réduite. Supprimez la partie ajoutée automatiquement, ** uniquement sur la page où React est installé **<%= javascript_pack_tag 'server_rendering.js' %>` Vous pouvez éviter cela en ajoutant.

Recommended Posts

[Avec des astuces de retour] Comment présenter React aux rails les plus simples
[Rails] Comment introduire le kaminari avec Slim et changer le design
Comment installer jQuery dans Rails 6
Comment exécuter React et Rails sur le même serveur
Présentation de React to Rails avec react-rails
[Rails] Comment utiliser la méthode de la carte
[Rails 5.x] Comment introduire des polices gratuites
Comment créer un environnement Rails 6 avec Docker
Comment décorer CSS sur les boutons radio de rails6 form_with (helper)
[Rails] Comment obtenir les informations sur l'utilisateur actuellement connecté avec devise
Comment comparer uniquement le temps avec Rails (de quelle heure à quelle heure, quelque chose comme)
Je veux introduire un comité avec des rails sans devenir trop sale
[Rails] Comment appliquer le CSS utilisé dans l'application principale avec Administrer
[Rails] Comment décider de la destination par "voies ferrées"
Comment créer une API avec GraphQL et Rails
[Rails] Comment créer un environnement avec Docker
Comment créer la blockchain la plus simple de Ruby
Essayez de résumer la disposition commune avec des rails
Comment vérifier les commandes Rails dans le terminal
[Rails] Comment lire le fichier XML téléchargé depuis l'écran en type Hash
[Rails] Comment enregistrer plusieurs enregistrements dans la table intermédiaire avec une association plusieurs-à-plusieurs
[Rails] Comment utiliser la méthode d'assistance utilisée dans l'application principale avec Administrer
Comment écrire des rails
Présentation de Vue.js à Rails
Comment désinstaller Rails
Comment changer l'action avec plusieurs boutons d'envoi
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
Comment pousser une application développée avec Rails vers Github
Comment supprimer un objet new_record construit avec Rails
[Ruby on Rails] Comment changer le nom de la colonne
Comment générer manuellement un JWT avec Knock in Rails
[Rails] Je ne sais pas comment utiliser le modèle ...
[Rails] Comment changer le nom de colonne de la table
Organisé comment interagir avec le JDK par étapes
[Comment insérer une vidéo dans un hameau avec Rails]
[Rails] Comment gérer les modifications d'URL après le rendu
Comment interroger Array dans jsonb avec Rails + postgres
[Rails] Comment obtenir le contenu des paramètres forts
Accro au Webpacker fourni en standard avec Rails 6
[Rails] Comment afficher les images dans la vue
[Explication approximative] Comment séparer le fonctionnement de l'environnement de production et de l'environnement de développement avec Rails
[Rails] Solution lorsque l'erreur "visite de la méthode non définie" "apparaît lors de l'utilisation de Capybara avec Rspec
Comment générer automatiquement un diagramme ER lors de la migration avec Rails 6
Comment faire une capture d'écran avec l'émulateur Android Studio
[rails] Comment publier des images
Comment définir des variables d'environnement lors de l'utilisation de Payjp avec Rails
[Rails] Comment utiliser enum
Bouton Retour en haut réalisé uniquement avec Javascript (rails, haml)