Réinitialisation de l'état initial de Réagir + ES6
J'ai une classe, ElementBuilder
ci-dessous, et lorsque l'utilisateur enregistre le Element
qu'ils ont construit, je veux de l'état de réinitialiser aux valeurs ci-dessous.
J'ai quelques fonctions dans cette classe que je n'ai pas prévu mais que le changement de l'état de title
, size
, et color
.
Dans l'ES 5, je voudrais avoir un getInitialState
fonction de ma classe et pourrait appeler this.getInitialState()
dans une fonction.
Cet élément réside dans mon application pour le cycle de vie d'un utilisateur connecté et je veux les valeurs par défaut de toujours être le même quel que soit l'usage.
Comment puis-je réaliser cela sans écrire une fonction qui définit un objet de valeurs par défaut (ou c'est peut-être la réponse)? merci!
class ElementBuilder extends Component {
constructor(props) {
super(props);
this.state = {
title: 'Testing,
size: 100,
color: '#4d96ce',
};
}
resetBuilder() {
this.setState({ this.getInitialState() });
}
}
pour la gestion de l'état qui est robuste, veuillez jeter un oeil à redux avec redux vous pouvez faire toute sorte de choses.e.g défaire, refaire et le temps voyage effortlesly
OriginalL'auteur Zack Shapiro | 2017-07-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une fonction get:
ou juste une variable:
oh, j'ai oublié le "sans écrire une fonction" 🙂 Mais alors la deuxième option qui semble la bonne.
Juste une remarque, je pense que dans le constructeur, vous devez appeler cette.getInitialState plutôt que cela.initialState et dans le getInitialState fonction, vous devez utiliser cette.setState plutôt que cela.état.
Si le code dans
resetBuilder
êtrethis.setState(this.initialState);
?bien sûr, merci! J'ai édité la réponse
OriginalL'auteur quotesBro
À l'aide de la proposition de champs de la classe, vous pourriez faire quelque chose comme ceci:
OriginalL'auteur wolverine ks
Depuis l'état initial ne semble pas dépendre uniquement de l'instance spécifique, il suffit de définir la valeur en dehors de la classe:
initialState
comme unclass
et non une variable?Faute de frappe, il doit être
const
. Merci pour cette remarque.OriginalL'auteur Felix Kling
Utiliser une Forte Composante de l'Ordre pour effacer l'état des composants (rerender)
Exemple De L'Élément.jsx :
OriginalL'auteur Charles Romney