ReactJS+NodeJS

React: Intoduction

1.Introduction,istallation

Components

2.a>Components 2.b> Constructeur et propriétés 2.c> Components:Exemples

State,filter , map ...

4.a> State (data) 4.b> State (change data) 4.c> State (Formulaire)
Exercice 1:Vente Produit Exercice 2:Note Stagiaire Exercice 3:Quizz Exercice 4:Gestion matchs Exercice 5:Crud Produit

Props

5a.Props introduction Exercice 1

Exercices

6.a Nombre Random 6.b Game Pile ou Face 6.c Calculatrice 6.c Quizz 6.c Les Styles Dynamiques 6.c Array Object Filter

..

7.React Hooks

Exercices

Exercice1: Client Crud Exercice2 :Filter Teams Exercice3 : Multi-select

Props dans Composant fonctionnel

Exemples Exercice1 Exercice2 Exercice3

Routage

7.Routage 8.Routage :public and restricted

Axios ,Fetch, Api

CRUD application

Redux,Redux Toolkit

Cours Redux

Exercices Redux

Exercice1 Social App Exercice1 WhatsApp App Exercice2 Restaurant App Exercice3 Student App Exercice4 Income ,Expense App Exercice5 Bank App

Exercices

LocalStorage Weather Api ToDo et LocalStorage

React+ionic

Ionic Create project 4.React Outils utiles 5.Lifecycle Methods 6.JSX

Gestion Ventes

Produit CRUD

6.Form :Ajouter un produit 8.Liste produits 9.Pagination 10.Liste produits +Pagination 11.Liste produits +Datatable 11.Liste produits +load more 12.Supprimer un produit 14.Details d'un produit 15.Recherche et Autocomplete

Reacts:Utils

Gestion des erreurs Variables d'environment Cookies Internationalization proptypes Form validation React Animation Fragment Google Maps

Utilisateur CRUD

18.Inscription upload file 19.Connexion et Les sessions 19.Connexion: JWT Token

Ventes CRUD

17.Vendre un produit 18.Facture Generate PDF 19.Statisques Charts

Redux





React:internationalization

folder Projet: test_react_project
L'internationalization d'une application permet de personnaliser les messages selon la langue par défaut de l'utilisateur ou la langue chosie par l'utilisateur

Exemple: FR

Exemple: English

il existe plusieurs outils dans React qui permet de faire l'internationalization comme: React-intl , React-intl-universal ,React-i18next ,LinguiJS ...
Dans ce cours nous allons utiliser React-intl

1.Installer React-intl

npm install react-intl

2.Créer le fichier lang/langues.js : Contenant la liste des langues à gérer

export const LANGUES = {
ENGLISH: "en-US",
FRENCH: "fr-FR",
};

3.Créer le fichier lang/messages.js : Contenant les messages avec les deux langure fr et en

import { LANGUES } from "./langues";

export const messages = {
[LANGUES.ENGLISH]: {
/*welcome :c'est un id qui sera utilisé pour récuper la valeur hello ...*/
welcome: "Hello everyone welcome to React FixWins.com",
/*{n, number, ::currency/USD}
n:sera remplacé par la valeur du nombre données exemple 452
number :le type de n
::currency/USD :second type de n
*/
prix:"Currency example: {n, number, ::currency/USD}",
nombre:"Number Example : {n, number}",
date: "date example : {d, date}",
about: "About us",
contact: "Contact us",
G_produit: "Stock management",
G_Client: "Costumers",
G_Product: "Products",
U_Register: "Create account",
U_Connect: "Sign in",
U_Search: "Search",
U_Search_ok: "Go",
languages: "Languages",
},
[LANGUES.FRENCH]: {
welcome: "Bonjour tout le monde bienvenue à React FixWins.com",
prix:
"Exemple pour les prix : {n, number, ::currency/USD}",
nombre:
"Exemple pour les nombres : {n, number}",
date: "Exemples pour les dates : {d, date}",
about: "Qui nous sommes",
contact: "contactez nous",
G_produit: "Gestion des Ventes",
G_Client: "Les Clients",
G_Product: "Les Produits",
U_Register: "Créer un compte",
U_Connect: "Connexion",
U_Search: "Chercher",
U_Search_ok: "Valider",
languages: "Languages",
}
};


4.Créer la component nav.js contenant un menu de navigation

npx crcf src/components/nav

import React, { Component } from "react";
import { FormattedMessage } from "react-intl";
/*Importer la liste des languages */
import { LANGUES } from "../../lang/langues";
function Nav(props) {

// Languages
const languages = [
{ name: "English", code: LANGUES.ENGLISH },
{ name: "Français", code: LANGUES.FRENCH },

];
return(
<nav className="navbar navbar-expand-lg navbar-light bg-light">
<div className="container-fluid">
<div className="collapse navbar-collapse" id="tar">
<ul className="navbar-nav me-auto mb-2 mb-lg-0">
<li className="nav-item">
<a className="nav-link active" aria-current="page" href="#">
<FormattedMessage id="G_produit" />
</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">
{/*Récuperla valeur du id selon la langue choisie*/}
<FormattedMessage id="G_Client" />
</a>
</li>
<li className="nav-item">
<a className="nav-link " href="#">
<FormattedMessage id="G_Product" />
</a>
</li>
<li className="nav-item">
<a className="nav-link " href="#">
<FormattedMessage id="about" />
</a>
</li>
<li className="nav-item">
<a className="nav-link " href="#">
<FormattedMessage id="contact" />
</a>
</li>
</ul>
<form className="d-flex">
{/*On peut pas appler directement <FormattedMessage id="U_Search" />
dans placeholder donc on doit faire :
*/}
<FormattedMessage id="U_Search" defaultMessage="search">
{
v=>
<input className="form-control me-2" type="search" placeholder={v} />
}
</FormattedMessage>
<button className="btn btn-outline-success" type="submit"><FormattedMessage id="U_Search_ok" /></button>
</form>
<ul className="navbar-nav">
<li className="nav-item">
<a className="nav-link" href="#">
<FormattedMessage id="U_Register" />
</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">
<FormattedMessage id="U_Connect" />
</a>
</li>

<li className="nav-item">
{/*Afficher la liste des langues pour modifier la langue*/}
<select className="nav-link" onChange={props.ChangerMaLangue} value={props.maLangue}>
{languages.map(({ name, code }) => (
<option key={code} value={code}>
{name}
</option>
))}
</select>
</li>
</ul>
</div>

</div>
</nav>
);
}

export default Nav;

4.Modifier le fichier App.js

import React,{useState} from "react";
/*importer les styles boostrap*/
import 'bootstrap/dist/css/bootstrap.min.css';
import Nav from './components/nav/nav.js';


import { IntlProvider,FormattedMessage } from "react-intl";
import { LANGUES } from "./lang/langues";
import { messages } from "./lang/messages";
function App() {
/*sauvegarder la langue locale de l'utilisateur dans une variable de state : curr*/
const [maLangue, setMaLangue] = useState(getMaLangue());

/*si l'utilisateur veut changer sa langue */
const ChangerMaLangue = (e) => {
setMaLangue(e.target.value);
/*Sauvegarder la langueChoisi dans le localStorage*/
localStorage.setItem("langueChoisi", e.target.value);
};

/*Extraire ma langue from localStorage s'elle existe
Sinon retouner ENGLISH*/
function getMaLangue() {
const saved = localStorage.getItem("langueChoisi");
return saved || LANGUES.ENGLISH;
}

return (

<IntlProvider
messages={messages[maLangue]}
locale={maLangue}
defaultLocale={LANGUES.ENGLISH}
>
<div>
{/*IntlProvider :est le gestionnaire de l'internationalization du module react-intl
messages[maLangue]:envoyer les messages du fichier lang/messsage.json selon la langue choisie
locale={maLangue}:la langue choisie
defaultLocale:si l'utilisateur n'a pas choisi une langue so English c'est par défaut
on peut la changer vers n'importe quelle langue qui se trouve dans local
*/}
{/*maLangue={maLangue} :envoyer à la components Nav la langue choisi via le props
ChangerMaLangue={ChangerMaLangue} :envoyer à la components Nav la fonction ChangerMaLangue via le props
*/}
<Nav maLangue={maLangue} ChangerMaLangue={ChangerMaLangue} />
{/*Exemples des données formatted ,date,nombre,prix*/}
<div className="card text-center">
<div className="card-header">
<FormattedMessage id="welcome" />
</div>
<div className="card-body">
<div className="card-text">
<p>
<FormattedMessage id="prix" values={{ n: 7874.464 }} />
</p>
<p>
<FormattedMessage id="nombre" values={{ n: 4754.12 }} />
</p>
<p>
<FormattedMessage id="date" values={{ d: new Date() }} />
</p>
</div>

</div>
<div className="card-footer text-muted">
<FormattedMessage id="G_produit" />
</div>
</div>
</div>
</IntlProvider>

);
}
export default App;
npm start