D'après ce que je peux voir, la seule chose qu'un componentWillMount
peut faire et un constructor
ne peut pas être d'appeler setState
.
componentWillMount() {
setState({ isLoaded: false });
}
Puisque nous n'avons pas appelé render
pourtant, un setState
en componentWillMount
préparera l'objet d'état avant que nous entrions dans le premier render()
passer. Ce qui est essentiellement la même chose qu'un constructor
fait :
constructor(props) {
super(props);
this.state = { isLoaded: false };
}
Mais je vois un autre cas d'utilisation où componentWillMount
est utile (du côté du serveur).
Considérons quelque chose d'asynchrone :
componentWillMount() {
myAsyncMethod(params, (result) => {
this.setState({ data: result });
})
}
Ici, nous ne pouvons pas utiliser le constructor
en tant qu'affectation à this.state
ne déclenchera pas render()
.
Qu'en est-il setState
en componentWillMount
? Selon Documents sur React :
componentWillMount()
est invoqué immédiatement avant le montage. Il est appelé avantrender(
), par conséquent, l'établissement de l'état dans cette méthode ne déclenchera pas un nouveau rendu. Évitez d'introduire des effets secondaires ou des abonnements dans cette méthode.
Donc, ici je pense que React utilisera la nouvelle valeur de l'état pour le premier rendu et évitera un re-rendu.
Question 1 : Est-ce que cela signifie, à l'intérieur componentWillMount
si nous appelons setState
dans le callback d'une méthode asynchrone (peut être un callback de promesse), React bloque le rendu initial jusqu'à ce que le callback soit exécuté ?
En ayant cette configuration sur côté client (oui, je vois ce cas d'utilisation dans le rendu côté serveur), si je suppose que ce qui précède est vrai, je ne verrai rien tant que ma méthode asynchrone ne sera pas terminée.
Est-ce qu'il me manque des concepts ?
Question 2 : Existe-t-il d'autres cas d'utilisation que je peux réaliser avec componentWillMount
uniquement, mais sans utiliser le constructor
y componentDidMount
?
1 votes
Question 1 : Cela signifie-t-il qu'à l'intérieur de componentWillMount, si nous appelons setState dans le callback d'une méthode async (peut être un callback de promesse), React bloque le rendu initial jusqu'à ce que le callback soit exécuté ?" Sûrement pas - comment le saurait-il ? React est puissant, mais pas magique.
0 votes
Je veux savoir si ma première question est tout à fait valable, sinon j'aimerais savoir quels sont les cas d'utilisation réels pour
componentWIllMount
. Désolé d'avoir posé deux questions dans une question. Je ne voulais pas dupliquer toutes mes recherches dans une autre question. :)