J'essaie ce tutoriel pour afficher des informations dans ma table en utilisant React et Redux, mais je continue à recevoir cette erreur:
Avertissement: Echec du type de prop: le prop
mèneest marqué comme requis dansLeads, mais sa valeur estundefinedErreur de type non interceptée: impossible lire la propriété 'map' de Leads.js indéfinis: 52
Mon code:
import React, { Component, Fragment } from "react";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { getLeads } from "../../actions/leads";
export class Leads extends Component {
static propTypes = {
leads: PropTypes.array.isRequired,
};
componentDidMount() {
this.props.getLeads();
}
render() {
return (
<Fragment>
<h2>Leads</h2>
<table className="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Message</th>
<th />
</tr>
</thead>
<tbody>
{this.props.leads.map(lead => (
<tr key={lead.id}>
<td>{lead.id}</td>
<td>{lead.name}</td>
<td>{lead.email}</td>
<td>{lead.message}</td>
<td><button className="btn btn-danger btn-sm">Delete</button></td>
</tr>
))}
</tbody>
</table>
</Fragment>
);
}
}
const mapStateToProps = state => ({
leads: state.leads.leads
});
export default connect(
mapStateToProps,
{ getLeads }
)(Leads);
Qu'est-ce que je fais mal?
3 Réponses :
le problème ne concerne pas ce composant Leads, mais le composant parent qui a utilisé Leads.
vous devez ajouter des accessoires appelés leads au format tableau.
les leads sont remplis à partir de l'état redux.
Merci beaucoup mais en fait c'était une faute de frappe dans mon fichier leads.js dans mon dossier action et le fichier leads.js dans mon dossier reducer
Le problème concerne
<Leads lead={[]} />
Vous avez marqué ceci comme valeur obligatoire à transmettre lorsque vous utilisez le composant Leads .
Donc, vous avez à utiliser comme ceci
static propTypes = {
leads: PropTypes.array.isRequired,
};
et un tableau vide ou des données que vous devez partager avec ce composant.
Merci beaucoup mais en fait c'était une faute de frappe dans mon fichier leads.js dans mon dossier action et le fichier leads.js dans mon dossier reducer
Le problème est que vous avez besoin des leads Prop
static propTypes = {
leads: PropTypes.array,
};
Vous devez passer un accessoire quand il est appelé ainsi
<Leads lead={[]} />
ou changez les propTypes statiques en supprimant le isRequired comme tel
static propTypes = {
leads: PropTypes.array.isRequired,
};
Merci beaucoup mais en fait c'était une faute de frappe dans mon fichier leads.js dans mon dossier action et le fichier leads.js dans mon dossier reducer
state.leads.leads sera apparemment indéfini. Vérifiez votre état