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.
ruby 2.6.3p62 Rails 6.0.2.2
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'
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.
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
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." }) %>`
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