Recherche…


Composant ReactJS écrit en Typescript

En fait, vous pouvez utiliser les composants de ReactJS dans Typescript comme dans l'exemple de Facebook. Remplacez simplement l'extension du fichier 'jsx' par 'tsx':

//helloMessage.tsx:
var HelloMessage = React.createClass({
  render: function() {
    return <div>Hello {this.props.name}</div>;
  }
});
ReactDOM.render(<HelloMessage name="John" />, mountNode);

Mais pour utiliser pleinement la fonctionnalité principale de Typescript (vérification de type statique), il faut faire deux choses:

1) convertir l'exemple React.createClass en classe ES6:

//helloMessage.tsx:
class HelloMessage extends React.Component {
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}
ReactDOM.render(<HelloMessage name="John" />, mountNode);

2) ajouter ensuite les interfaces Props et State:

interface IHelloMessageProps {
    name:string;
}

interface IHelloMessageState {
  //empty in our case
}

class HelloMessage extends React.Component<IHelloMessageProps, IHelloMessageState> {
  constructor(){
    super();
  }  
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}
ReactDOM.render(<HelloMessage name="Sebastian" />, mountNode);

Maintenant, Typescript affichera une erreur si le programmeur oublie de transmettre des accessoires. Ou s'ils ont ajouté des accessoires qui ne sont pas définis dans l'interface.

Composants réactifs sans état dans Typescript

Les composants en réaction qui sont des fonctions pures de leurs accessoires et qui ne nécessitent aucun état interne peuvent être écrits en tant que fonctions JavaScript au lieu d'utiliser la syntaxe de classe standard, comme suit:

import React from 'react'

const HelloWorld = (props) => (
    <h1>Hello, {props.name}!</h1>
);

La même chose peut être obtenue dans Typescript en utilisant la classe React.SFC :

import * as React from 'react';

class GreeterProps {
   name: string
}

const Greeter : React.SFC<GreeterProps> = props =>
    <h1>Hello, {props.name}!</h1>;

Notez que le nom React.SFC est un alias pour React.StatelessComponent So, soit peut être utilisé.

Installation et configuration

Pour utiliser typecript avec react dans un projet de noeud, vous devez d'abord avoir un répertoire de projet initialisé avec npm. Pour initialiser le répertoire avec npm init

Installation via npm ou yarn

Vous pouvez installer React en utilisant npm en procédant comme suit:

npm install --save react react-dom

Facebook a publié son propre gestionnaire de paquets nommé Yarn , qui peut également être utilisé pour installer React. Après avoir installé Yarn, il vous suffit d'exécuter cette commande:

yarn add react react-dom

Vous pouvez ensuite utiliser React dans votre projet exactement comme si vous aviez installé React via npm.

Installer les définitions de type de réaction dans Typescript 2.0+

Pour compiler votre code en utilisant dactylographié, ajoutez / installez des fichiers de définition de type en utilisant npm ou yarn.

npm install --save-dev @types/react @types/react-dom

ou, en utilisant du fil

yarn add --dev @types/react @types/react-dom

Installation des définitions de type de réaction dans les anciennes versions de Typescript

Vous devez utiliser un paquet séparé appelé tsd

tsd install react react-dom --save

Ajouter ou modifier la configuration de TypeScript

Pour utiliser JSX , un langage mélangeant le javascript avec html / xml, vous devez modifier la configuration du compilateur de typecript. Dans le fichier de configuration dactylographié du projet (généralement appelé tsconfig.json ), vous devrez ajouter l'option JSX en tant que:

"compilerOptions": {
    "jsx": "react"
},

Cette option du compilateur demande essentiellement au compilateur typecript de traduire les balises JSX dans le code en appels de fonction javascript.

Pour éviter que le compilateur de typecript convertisse JSX en appels de fonctions javascript, utilisez

"compilerOptions": {
    "jsx": "preserve"
},

Composants sans état et sans propriété

Le composant de réaction le plus simple sans état et sans propriétés peut être écrit comme suit:

import * as React from 'react';

const Greeter = () => <span>Hello, World!</span>

Ce composant, cependant, ne peut pas accéder à this.props car this.props ne peut pas dire s'il s'agit d'un composant de réaction. Pour accéder à ses accessoires, utilisez:

import * as React from 'react';

const Greeter: React.SFC<{}> = props => () => <span>Hello, World!</span>

Même si le composant ne possède pas de propriétés explicitement définies, il peut désormais accéder à props.children car tous les composants ont des enfants par nature.

Un autre bon usage similaire des composants sans état et sans propriété réside dans la modélisation simple des pages. Ce qui suit est un composant Page simple, en supposant qu'il existe des composants Container , NavTop et NavBottom hypothétiques dans le projet:

import * as React from 'react';

const Page: React.SFC<{}> = props => () => 
    <Container>
        <NavTop />
        {props.children}
        <NavBottom />
    </Container>

const LoginPage: React.SFC<{}> = props => () =>
    <Page>
        Login Pass: <input type="password" />
    </Page>

Dans cet exemple, le composant Page peut ensuite être utilisé par toute autre page réelle en tant que modèle de base.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow