Je suis nouveau dans le domaine de Redux, et je n'ai vraiment pas beaucoup de temps à consacrer à la recherche, alors j'apprécierais que vous puissiez m'aider. Donc, fondamentalement, j'ai un composant React où j'authentifie un utilisateur avec une requête HTTP vers un backend. Lorsque je reçois la réponse en retour, je veux que les données soient enregistrées dans un magasin Redux afin que je puisse y accéder sur d'autres composants / routes. Comment cela peut-il être fait ? Merci.
C'est mon composant :
class Register extends Component {
constructor(props) {
super(props);
this.state = {
errorMessage: null,
user: null
};
}
register = (event) => {
event.preventDefault();
console.log(event.target.email.value);
let errorMessage = null;
if (!event.target.name.value) errorMessage = 'Numele este obligatoriu.';
else if (!event.target.email.value)
errorMessage = 'Email-ul este obligatoriu.';
else {
const body = {
name: event.target.name.value,
email: event.target.email.value,
password: event.target.password.value,
confirmPassword: event.target.confirmPassword.value
};
return axios
.post('http://localhost:5000/api/v1/auth/register', body)
.then((response) => {
console.log(response);
this.setState({ // Instead of this, the user should be stored using Redux
user: response.data.data.user
});
})
.catch((error) => {
this.setState({ errorMessage: error.response.data.message });
});
}
this.setState({ errorMessage });
};
render() {
return (
<div className="register-page">
<form onSubmit={this.register}>
<h3>Cont nou</h3>
<input type="text" placeholder="Nume" name="name" />
<input type="text" placeholder="E-mail" name="email" />
<input type="password" placeholder="Parola" name="password" />
<input
type="password"
placeholder="Confirma parola"
name="confirmPassword"
/>
<span className="error-message">{this.state.errorMessage}</span>
<input type="submit" value="Trimite" name="submit" />
</form>
</div>
);
}
}
export default Register;