Académique Documents
Professionnel Documents
Culture Documents
Bien que les composants React puissent gérer leur propre état localement,
lorsque vous avez une application complexe, il est généralement préférable
de conserver l'état de l'application dans un seul emplacement avec Redux. Il
existe des exceptions lorsque des composants individuels peuvent avoir un
état local qui leur est propre. Enfin, étant donné que Redux n'est pas conçu
pour fonctionner avec React prêt à l'emploi, vous devez utiliser le react-
reduxpackage. Il vous permet de transmettre Redux stateet dispatchvos
composants React en tant que fichiers props.
Au cours des prochains défis, vous allez d'abord créer un composant React
simple qui vous permet de saisir de nouveaux messages texte. Ceux-ci sont
ajoutés à un tableau affiché dans la vue. Cela devrait être une bonne
révision de ce que vous avez appris dans les leçons React. Ensuite, vous allez
créer un magasin Redux et des actions qui gèrent l'état du tableau de
messages. Enfin, vous utiliserez react-reduxpour connecter le magasin Redux
à votre composant, extrayant ainsi l'état local dans le magasin Redux.
Obtenir de l'aide
Essais
Obtenir de l'aide
Essais
submitMessage(){
this.setState({
input: '',
messages: [...this.state.messages, this.state.input]
})
}
render() {
return (
<div>
<h2>Type in a new Message:</h2>
{ /* render an input, button, and ul here */ }
<input onChange={this.handleChange.bind(this)}
value={this.state.input}/>
<button
onClick={this.submitMessage.bind(this)}>Submit</button>
<ul>
{this.state.messages.map((x, i)=>{
return <li key={i}>{x}</li>
})}
</ul>
{ /* change code above this line */ }
</div>
);
}
};
Obtenir de l'aide
Essais
React Redux fournit une petite API avec deux fonctionnalités clés
: Provideret connect. Un autre défi couvre connect. Il Providers'agit d'un
composant wrapper de React Redux qui encapsule votre application
React. Ce wrapper vous permet ensuite d'accéder à
Redux storeet dispatchaux fonctions de votre arborescence de
composants. Providerprend deux accessoires, le magasin Redux et les
composants enfants de votre application. La définition d' Providerun
composant d'application peut ressembler à ceci :
<Provider store={store}>
<App/>
</Provider>
L'éditeur de code affiche maintenant tout votre code Redux et React des
derniers défis. Il comprend le magasin Redux, les actions et
le DisplayMessagescomposant. La seule pièce nouvelle est
le AppWrappercomposant en bas. Utilisez ce composant de niveau supérieur
pour rendre le Providerfrom ReactReduxet passez le magasin Redux en tant
que prop. Rendez ensuite le DisplayMessagescomposant en tant
qu'enfant. Une fois que vous avez terminé, vous devriez voir votre
composant React rendu sur la page.
Remarque : React Redux est disponible en tant que variable globale ici, vous
pouvez donc accéder au fournisseur avec une notation par points. Le code
de l'éditeur en profite et le définit sur une constante Providerà utiliser dans
la AppWrapperméthode de rendu.
Obtenir de l'aide
Essais
// Redux:
const ADD = 'ADD';
// React:
Dans ces fonctions, vous déclarez à quels éléments d'état vous souhaitez
avoir accès et quels créateurs d'action vous devez pouvoir envoyer. Une fois
ces fonctions en place, vous verrez comment utiliser la connectméthode
React Redux pour les connecter à vos composants dans un autre défi.
Obtenir de l'aide
Essais
{
submitLoginUser: function(username) {
dispatch(loginUser(username));
}
}
Obtenir de l'aide
Essais
connect(mapStateToProps, mapDispatchToProps)(MyComponent)
Remarque : Si vous souhaitez omettre l'un des arguments de
la connectméthode, passez-le nullà sa place.
Obtenir de l'aide
Essais
Obtenir de l'aide
Essais
Obtenir de l'aide
Essais
Obtenir de l'aide
Essais
• Attente :Le AppWrapperdevrait rendre à la page.
• Attente :Le Presentationalcomposant doit s'afficher sur la page.
• Attente :Le Presentationalcomposant doit restituer les
éléments h2, input, buttonet ul.
• Attente :Le Presentationalcomposant doit être reçu messagesdu magasin
Redux en tant qu'accessoire.
• Attente :Le Presentationalcomposant doit recevoir
le submitMessagecréateur de l'action comme accessoire.
• Attente :L'état du Presentationalcomposant doit contenir une
propriété, input, qui est initialisée avec une chaîne vide.
• Attente :La saisie de l' inputélément doit mettre à jour l'état
du Presentationalcomposant.
• Attente :L'envoi du submitMessagesur le Presentationalcomposant doit
mettre à jour le magasin Redux et effacer l'entrée dans l'état local.
• Attente :Le Presentationalcomposant doit restituer le messagesdepuis le
magasin Redux.
// Redux:
const ADD = 'ADD';
// React:
const Provider = ReactRedux.Provider;
const connect = ReactRedux.connect;
this.props.submitNewMessage(currentMe
ssage);
this.setState({
input: '',
// messages: state.messages.conc
at(state.input)
});
}
render() {
return (
<div>
<h2>Type in a new Message:</h
2>
<input
value={this.state.input}
onChange={this.handleChange
}/><br/>
<button onClick={this.submitM
essage}>Submit</button>
<ul>
{this.props.messages.map( (
message, idx) => {
return (
<li key={idx}>{messa
ge}</li>
)
})
}
</ul>
</div>
);
}
};
// Change code above this line