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>
3 Réponses :
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( ...
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 :)
On dirait dans la ligne 3, Selon ce que product.reviews.length. / code> cause l'erreur, comme produit.Reviews code> est non défini code> et donc le Longueur Code> Vous ne pouvez pas être trouvé. P>
objet code> est et ce que vous voulez arriver, vous pouvez essayer d'ajouter ! product.reviews || code> avant la vérification de la longueur, pour couvrir le cas où il est vide. p>
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.
Au début, votre produit n'a pas d'objet Avis code> par conséquent produit.Reviews code> 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: P>
produit.Reviews && product.reviews.Length code> p>
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é
Quelle est l'image que vous voulez cliquer? pas capable de le trouver dans votre code
De plus, vous devez ajouter
JavaScript code> code pour la gestion de l'événement de clicest 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!