-
-
Notifications
You must be signed in to change notification settings - Fork 521
wip : French Translation #396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 5 commits
e3dbcb9
1b85ef3
22f0705
5c025f6
c457456
092e690
d8ec11a
9b8e632
33a004f
c3655b8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,181 @@ | ||
| --- | ||
| name: Référence API | ||
| description: ‘Apprenez en plus à propos de toutes les fonctions exporté Preact’ | ||
| --- | ||
|
|
||
| # Référence API | ||
|
|
||
| Cette page sert de rapide vue d’ensemble de toutes les fonctions exportés. | ||
|
|
||
|
|
||
| --- | ||
|
|
||
| <toc></toc> | ||
|
|
||
| --- | ||
|
|
||
| ## Preact.Component | ||
|
|
||
| `Component` est une classe de base dont vous allez généralement hériter afin de créer des composants Preact ayant leur propre état. | ||
|
|
||
| ### Component.render(props, state) | ||
|
|
||
| Tous les composants doivent implémenter la fonction `render()`. Elle reçoit les propriétés et l'état du composant, et doit retourner un élément Preact ou null. | ||
|
|
||
| ```jsx | ||
| import { Component } from 'preact'; | ||
|
|
||
| class MyComponent extends Component { | ||
| render(props, state) { | ||
| // props === this.props | ||
| // state === this.state | ||
|
|
||
| return <h1>Bonjour, {props.name}!</h1>; | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| Pour en apprendre d’avantage à propos des `Components` et comment ils peuvent être utilisé, visitez la page [Components](guide/v10/components). | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## render() | ||
|
|
||
| `render(component, containerNode, [replaceNode])` | ||
|
|
||
| Change un composant Preact en élément DOM `containerNode`. Retourne une référence à l'élément DOM rendu. | ||
|
|
||
| Si le paramètre optionnel `replaceNode` est fourni avec un élément DOM et que celui-ci est un enfant de `containerNode`, Preact fera une mise-à-jour et remplacera cet élément en utilisant son algorithme de différenciation. | ||
|
|
||
| ```js | ||
| import { render } from 'preact'; | ||
|
|
||
| const Foo = () => <div>foo</div>; | ||
|
|
||
| // DOM avant le rendu: | ||
| // <div id="container"></div> | ||
| render(<Foo />, document.getElementById('container')); | ||
| // Après rendu: | ||
| // <div id="container"> | ||
| // <div>foo</div> | ||
| // </div> | ||
|
|
||
| // DOM avant rendu: | ||
| // <div id="container"> | ||
| // <div>bar</div> | ||
| // <div id="target"></div> | ||
| // </div> | ||
| render( | ||
| Foo, | ||
| document.getElementById('container'), | ||
| document.getElementById('target') | ||
| ); | ||
| // Après rendu: | ||
| // <div id="container"> | ||
| // <div>bar</div> | ||
| // <div id="target"> | ||
| // <div>foo</div> | ||
| // </div> | ||
| // </div> | ||
| ``` | ||
|
|
||
| ## hydrate() | ||
| Lorsque vous utilisez un DOM pré-rendu, il n'y a pas besoin de faire en rendu encore une fois. Avec `hydrate`, la plupart de la phase de différenciation sera sauté à l'exception des écoute d'évènements. C'est principalement utilisé en conjonction avec le rendu coté serveur (en anglais SSR : [Server-Side Rendering](/guide/v10/server-side-rendering)). | ||
|
||
|
|
||
|
|
||
| ```jsx | ||
| import { render } from 'preact'; | ||
|
|
||
| const Foo = () => <div>foo</div>; | ||
| hydrate(<Foo />, document.getElementById('container)); | ||
| ``` | ||
|
|
||
| ## h() / createElement() | ||
|
|
||
| `h(nodeName, attributes, [...children])` | ||
|
|
||
| Retourne un élément DOM virtuel Preact (en anglais : Preact Virtual DOM) avec les `attributes` donnés. | ||
|
|
||
| Les arguments suivant sont collectés dans une liste de `children` (enfants), et peuvent être : | ||
|
|
||
| - Une valeur scalaire (chaine de caractère, nombres, booléen, null, undefined, etc...) | ||
| - D'autres éléments DOM virtuel | ||
| - Une infinité de chaine imbriqués des éléments d'au dessus | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ```js | ||
| import { h } from 'preact'; | ||
|
|
||
| h('div', { id: 'foo' }, 'Bonjour!'); | ||
| // <div id="foo">Bonjour!</div> | ||
|
|
||
| h('div', { id: 'foo' }, 'Bonjour', null, ['Preact!']); | ||
| // <div id="foo">Bonjour Preact!</div> | ||
|
|
||
| h( | ||
| 'div', | ||
| { id: 'foo' }, | ||
| h('span', null, 'Bonjour!') | ||
| ); | ||
| // <div id="foo"><span>Bonjour!</span></div> | ||
| ``` | ||
|
|
||
| ## toChildArray | ||
|
|
||
| Cette fonction d'aide convertira toujours des enfants en liste. Si le paramètre est déjà une liste ceci ne fera rien. Cette fonction est nécéssaire parce que le paramètre `children` n'est pas garantis d'être une liste. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Si un élément ne contient qu'un seul enfant, celui-ci le recevra directement. Ce n'est seulement lorsqu'il y a d'avantage d'enfants que vous pouvez être sûr que vous recevrez une liste. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Avec `toChildArray` vous pouvez vous assurer que ce sera toujours le cas. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ```jsx | ||
| import { toChildArray } from 'preact'; | ||
|
|
||
| function Foo(props) { | ||
| const count = toChildArray(props.children).length; | ||
| return <div>I have {count} children</div>; | ||
| } | ||
|
|
||
| // children is not an array | ||
| render(<Foo>bar</Foo>, container); | ||
|
|
||
| // Children is an array | ||
| render(( | ||
| <Foo> | ||
| <p>A</p> | ||
| <p>B</p> | ||
| </Foo>, | ||
| container | ||
| ); | ||
| ``` | ||
|
|
||
| ## cloneElement | ||
|
|
||
| Cette fonction vous permet de faire un clone superficiel d'un composant et de faire le rendu du clone quelque part d'autre. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## createContext | ||
|
|
||
| Voir dans la section [Documentation context](/guide/v10/context#createcontext). | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## createRef | ||
|
|
||
| Voir dans la section [Documentation références](/guide/v10/refs#createref). | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Fragment | ||
|
|
||
| Un type spécial de composant qui ne fait aucun rendu dans le DOM. Ils permettent à un composant de retourner multiple enfants sans avoir besoin de les emballer dans une balise div. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ```jsx | ||
| import { Fragment, render } from 'preact'; | ||
|
|
||
| render(( | ||
| <Fragment> | ||
| <div>A</div> | ||
| <div>B</div> | ||
| <div>C</div> | ||
| </Fragment> | ||
| ), container); | ||
| // Renders: | ||
| // <div id="container> | ||
| // <div>A</div> | ||
| // <div>B</div> | ||
| // <div>C</div> | ||
| // </div> | ||
| ``` | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,151 @@ | ||
| --- | ||
| name: Composant `Components` | ||
| descriptions: 'Les composants sont le coeur des application Preact. Apprenez comment vous en servir et composez des UI' | ||
|
|
||
| --- | ||
|
|
||
| # Composant | ||
|
|
||
| Les composants (`Component`) représentent le bloque de construction de base de Preact. Il sont fondamentaux pour construire facilement des UI complexes à partir de petits blocs. Ils sont aussi responsables d'attacher l'état (`state`) à notre rendu de sorti. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Il y a deux types de composants dans Preact, et nous allons les voir dans ce guide. | ||
|
|
||
| --- | ||
|
|
||
| <toc></toc> | ||
|
|
||
| --- | ||
|
|
||
| ## Composant fonctionnel | ||
|
|
||
| Les composants fonctionnels sont des simples fonctions qui reçoivent en paramètre `props` comme premier argument. Le nom de la fonction **doit** commencer avec une majuscule pour qu'elles soient reconnues avec JSX. | ||
|
|
||
| ```jsx | ||
| function MyComponent(props) { | ||
| return <div>Mon nom est {props.name}.</div>; | ||
| } | ||
|
|
||
| // Usage | ||
| const App = <MyComponent name="John Doe" />; | ||
|
|
||
| // Renders: <div>Mon nom est John Doe.</div> | ||
| render(App, document.body); | ||
| ``` | ||
|
|
||
| > Note, dans des versions antérieurs elles étaient connues comme des composants sans états mais ceci n'est plus vrai depuis les [`hooks-addon`](/guide/v10/hooks) | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Composant class | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Les composants class ont un état et des méthodes de cycle de vie. Les suivantes sont des méthodes spéciales qui seront appelés lorsque le composant est attaché au DOM ou lorsqu'il est détruit par exemple. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Ici, nous avons une simple classe composant appelé `<Clock>` qui affiche le temps actuel: | ||
|
|
||
| ```js | ||
| class Clock extends Component { | ||
| state = { time: Date.now() } | ||
|
|
||
| // Cycle de vie: Appellé lorsque notre composant est crée | ||
| componentDidMount() { | ||
| // update time every second | ||
| this.timer = setInterval(() => { | ||
| this.setState({ time: Date.now() }); | ||
| }, 1000); | ||
| } | ||
|
|
||
| // Cycle de vie: Appelé lorsque notre composant est détruit | ||
| componentWillUnmount() { | ||
| // s'arrête lorsqu'il n'est plus affichable | ||
| clearInterval(this.timer); | ||
| } | ||
|
|
||
| render() { | ||
| let time = new Date(this.state.time).toLocaleTimeString(); | ||
| return <span>{time}</span>; | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| ### Méthodes de cycle de vie | ||
|
|
||
| Afin de permettre à l'horloge de se mettre à jours toutes les secondes, nous avons besoin de savoir quand `<Clock>` est monté au DOM. _Si vous avez utilisé des éléments personnalisés HTML5, ceci est similaire aux méthodes de cycle de vie `attachedCallback` et `detachedCallback`._ Preact invoque ces méthodes en suivant le cycle suivant s'ils sont défini dans le composant: | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| | Méthode de cycle de vie | Quand est ce qu'elle est appelé | | ||
| |-----------------------------|--------------------------------------------------| | ||
| | `componentWillMount` | (obsolète) avant que le composant soit monté dans le DOM| | ||
| | `componentDidMount` | après que le composant soit monté dans le DOM | | ||
| | `componentWillUnmount` | avant la suppression de l'élément du DOM | | ||
| | `componentWillReceiveProps` | (obsolète) avant que de nouveaux paramètres soient ajoutés | | ||
| | `getDerivedStateFromProps` | juste avant `shouldComponentUpdate`. À utiliser avec précaution. | | ||
| | `shouldComponentUpdate` | avant `render()`. Retourner `false` pour sauter le rendu | | ||
| | `componentWillUpdate` | (obsolète) appelé avant `render()` | | ||
| | `getSnapshotBeforeUpdate` | appelé avant `render()` | | ||
| | `componentDidUpdate` | appelé après `render()` | | ||
|
|
||
| > Voir [ce diagramme](https://twitter.com/dan_abramov/status/981712092611989509) pour avoir un visuel de leur relation entre eux même. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| #### componentDidCatch | ||
|
|
||
| Il y a une méthode qui a besoin d'une reconnaissance spécial et c'est `componentDidCatch`. Elle est special car elle permet de gérer des erreurs qui apparaissent pendant le rendu. Ceci inclus les erreurs qui apparaissent dans les fonctions attachés aux cycle de vie, mais exclus toute erreur géré de manière asynchrone (Comme après un appel `fetch()`). | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Quand une erreur est appelé, nous pouvons utiliser cette méthode pour réagir à n'importe quel erreurs et afficher un jolie message d'erreur ou tout autre contenu de retrait. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
|
|
||
| ```jsx | ||
| class Catcher extends Component { | ||
| state = { errored: false } | ||
|
|
||
| componentDidCatch(error) { | ||
| this.setState({ errored: true }); | ||
| } | ||
|
|
||
| render(props, state) { | ||
| if (state.errored) { | ||
| return <p>Quelque chose s'est mal passé</p>; | ||
| } | ||
| return props.children; | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| ## Fragments | ||
|
|
||
| Un `Fragment` permet de retourner de multiples éléments à la fois. Ils résolvent une limitation du JSX qui demande que chaque "bloques (`block`)" ne doivent avoir qu'un seul élément racine (`root`). Vous les rencontrerez souvent en combination avec les listes, les tables ou le CSS Flexbox ou chaque éléments intermédiaires auraient autrement un style différent. | ||
krzepah marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ```jsx | ||
| import { Fragment, render } from 'preact'; | ||
|
|
||
| function TodoItems() { | ||
| return ( | ||
| <Fragment> | ||
| <li>A</li> | ||
| <li>B</li> | ||
| <li>C</li> | ||
| </Fragment> | ||
| ) | ||
| } | ||
|
|
||
| const App = ( | ||
| <ul> | ||
| <TodoItems /> | ||
| <li>D</li> | ||
| </ul> | ||
| ); | ||
|
|
||
| render(App, container); | ||
| // Renders: | ||
| // <ul> | ||
| // <li>A</li> | ||
| // <li>B</li> | ||
| // <li>C</li> | ||
| // <li>D</li> | ||
| // </ul> | ||
| ``` | ||
|
|
||
| Notez que les transpilateurs modernes vous permettent d'utiliser une syntaxe plus courte pour `Fragments`. Ce raccourci est bien plus commun et sera celui que vous rencontrerez le plus souvent. | ||
|
|
||
| ```jsx | ||
| // This: | ||
| const Foo = <Fragment>foo</Fragment>; | ||
| // ...is the same as this: | ||
| const Bar = <>foo</>; | ||
| ``` | ||
Uh oh!
There was an error while loading. Please reload this page.