0
votes

TypeError: Impossible de lire la propriété 'Longueur' de ReactJs non définis

J'essaie de créer un site Web avec réagir JS mais j'ai eu une erreur lorsque j'essaie de cliquer sur l'image que je veux laisser un commentaire, il dit TypeError: impossible de lire la propriété de la propriété non définie Est-ce que quelqu'un qui peut m'aider à comprendre, s'il vous plaît!

Ceci est le code. P>

Merci! P>

<div className="content-margined">
    <h2>Reviews</h2>
    {!product.reviews.length & <div>There is no review</div>}
    
    <ul className="review" id="reviews">
        {product.reviews.map((review) => (
            <li key={review._id}>
                <div>{review.name}</div>
                <div>
                    <Rating value={review.rating}></Rating>
                </div>
                <div>{review.createdAt.substring(0, 10)}</div>
                <div>{review.comment}</div>
            </li>
        ))}
        <li>
            <h3>Write A Commnet</h3>
            {userInfo ? (
                <form onSubmit={submitHandler}>
                    <ul className="form-container">
                        <li>
                            <label htmlFor="rating">Rating</label>
                            <select
                                name="rating"
                                id="rating"
                                value={rating}
                                onChange={(e) => setRating(e.target.value)}
                            >
                                <option value="1">1- Poor</option>
                                <option value="2">2- Fair</option>
                                <option value="3">3- Good</option>
                                <option value="4">4- Very Good</option>
                                <option value="5">5- Excelent</option>
                            </select>
                        </li>
                        <li>
                            <label htmlFor="comment">Comment</label>
                            <textarea
                                name="comment"
                                value={comment}
                                onChange={(e) => setComment(e.target.value)}
                            ></textarea>
                        </li>
                        <li>
                            <button type="submit" className="button primary">
                                Submit
                            </button>
                        </li>
                    </ul>
                </form>
            ) : (
                <div>
                    Please <Link to="/signin">Sign-in</Link> to write a review.
                </div>
            )}
        </li>
    </ul>
</div>


4 commentaires

Quelle est l'image que vous voulez cliquer? pas capable de le trouver dans votre code


De plus, vous devez ajouter JavaScript code pour la gestion de l'événement de clic


est le produit.Reviews est un tableau? Si c'est un objet, essayez ce produit.Reviews && product.reviews.Length <0


Il y a un site Web de la galerie, je le fais lorsque l'utilisateur aime l'image s'ils veulent laisser un commentaire, ils doivent d'abord cliquer sur l'image, puis écrivez un commentaire sur le bouton de commentaire, puis indiquer le nom de l'utilisateur qui a commenté et Les critiques, voici ce que je veux!


3 Réponses :


1
votes

L'erreur indique que produit.Reviews code> est non défini code> pendant le rendu et n'a donc aucun attribut longueur code>. Vous devez vous assurer que produit.Reviews code> est toujours un tableau ou vérifiez s'il est défini en premier:

{product.reviews && product.reviews.map( ...


3 commentaires

Hey j'essaie encore votre code, il dit TypeError: Impossible de lire la propriété 'carte' de non définie


@Murtazahassani Bien sûr, vous devez également vérifier s'il s'agit d'un tableau avant de la cartographier. Mise à jour de ma réponse. Je pensais que cela serait clair car l'erreur est très verbeuse sur quel est le problème. Il serait peut-être préférable de simplement s'assurer qu'il s'agit toujours d'une matrice alors de le vérifier partout.


Merci beaucoup pour votre réponse rapide que les gens que les gens vous aiment tellement, mon problème corrigé par votre réponse, merci beaucoup :)



0
votes

On dirait dans la ligne 3, product.reviews.length. / code> cause l'erreur, comme produit.Reviews est non défini et donc le Longueur Vous ne pouvez pas être trouvé.

Selon ce que objet est et ce que vous voulez arriver, vous pouvez essayer d'ajouter ! product.reviews || avant la vérification de la longueur, pour couvrir le cas où il est vide.


2 commentaires

Hey oui tu es correct c'est à la ligne 3, pourriez-vous s'il vous plaît dites-moi comment devrais-je écrire ce code? Merci beaucoup


Une autre réponse - Stackoverflow.com/a/62874688/13892264 a écrit le code pour vous, vérifiez-le.



0
votes

Au début, votre produit n'a pas d'objet Avis par conséquent produit.Reviews est indéfini. Pour résoudre ce problème, vous devrez commencer par vérifier si le produit dispose d'un objet d'objet comme celui-ci:

produit.Reviews && product.reviews.Length


3 commentaires

Hey merci de votre réponse, j'essaie comme vous l'avez dit. TypeError: Impossible de lire la propriété de la propriété de non définie, ce que je devrais faire, s'il vous plaît?


@Murtazahassani Tout comme ce chèque, vous devrez vérifier à nouveau avant la cartographie: produit.reviews.length && product.reviews.map


Hé, merci beaucoup pour la responsabilité que vous rejouez très vite, mon problème fixé