Rails + Mobx + React + React Router =





Setup

Rails

New App
rails new Demo --database=postgresql --webpack
------ add to gemfile ---
#gem 'webpacker'
gem 'react-rails'
then
bundle install
Setup Webpacker (1)
rails webpacker:install
rails webpacker:install:react
rails generate react:install
#add line to header of application.html.erb
<%= javascript_pack_tag 'application' %>
rails g react:component HelloWorld
Setup Webpacker (2)
npm install --save-dev @babel/plugin-proposal-class-properties
npm install --save-dev @babel/plugin-proposal-decorators
#babel.config.js
add :
[
require("@babel/plugin-proposal-decorators").default,
{
legacy: true
}
],
[
require("@babel/plugin-proposal-class-properties").default,
{
loose: true
}
],
Setup Webpacker (5)
on config/webpacker.yml
add in the extensions list if not present:
- .jsx
WOUHOU: READY

MOBX

MOBX

MOBX

React router

React router
yarn add react-router-dom
Pour une fois que c'est simple ;-) Enjoy !
React router
import React from "react";
import Index from "./index"
import About from "./About"
import Users from "./Users";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
//import { HashRouter as Router, Route, Link } from "react-router-dom";
function AppRouter() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about/">About</Link>
</li>
<li>
<Link to="/users/">Users</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Index} />
<Route path="/about/" component={About} />
<Route path="/users/" component={Users} />
</div>
</Router>
);
}
export default AppRouter;
Tips and Tricks

Tips and Tricks
<Comp Key={number} />
=> force reload component :-)
Tips and Tricks
static components
// destructuration des composants
const MyStaticComp = ({id,nom,prenom}) => {
return (
<div>
<p>{id}</p>
<p>{prenom}</p>
<p>{nom}</p>
</div>
)
}
Tips and Tricks
MOment JS

Tips and Tricks
Get attributes
<a onClick={this.handleClick} data-firstname="john" data-lastname="doe">balbalbab</a>
handleClick(e){
let firstname = e.target.dataset.firstname;
let lastname = e.target.dataset.lastname;
}
Rails + Mobx + React + React Router
By jchr
Rails + Mobx + React + React Router
- 745