0
votes

AVERTISSEMENT: TYPE DE PLUS ÉCHELLE: La PROP `LEADS` est marquée comme requise dans` LEADS`, mais sa valeur est «indéfinie»

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ène est marqué comme requis dans Leads , mais sa valeur est undefined Erreur 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?


1 commentaires

state.leads.leads sera apparemment indéfini. Vérifiez votre état


3 Réponses :


0
votes

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.


2 commentaires

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



0
votes

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.


1 commentaires

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



0
votes

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,
};


1 commentaires

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