Reactjs "unique key prop" hatası

scorpionsx

Hectopat
Katılım
20 Mayıs 2022
Mesajlar
96
Daha fazla  
Cinsiyet
Kadın
React ile bir web uygulaması yazıyorum ama bu hatayı aldım. Neyi gözden kaçırıyorum anlamadım. Kodları ekledim.

JavaScript:
import { useEffect, useState } from "react";
import Post from "../post/Post";
import Share from "../share/Share";
import "./feed.css";
import axios from "axios";

export default function Feed() {
 const [posts, setPosts] = useState([]);

 useEffect(() => {
 const fetchPosts = async () => {
 const res = await axios.get("posts/timeline/6639f636d663303ec4b65925");
 setPosts(res.data);
 };
 fetchPosts();
 }, []);

 return (
 <div className="feed">
 <div className="feedWrapper">
 <Share />
 {posts.map((p) => (
 <Post key={p.id} post={p} />
 ))}
 </div>
 </div>
 );
}

Kod:
import "./post.css";
import { MoreVert } from "@mui/icons-material";
import axios from "axios";
import { useEffect, useState } from "react";

export default function Post({ post }) {
 const [like, setLike] = useState(post.like);
 const [isLiked, setIsLiked] = useState(false);
 const [user, setUser] = useState({});
 const PF = process.env.REACT_APP_PUBLIC_FOLDER;

 useEffect(() => {
 const fetchUser = async () => {
 const res = await axios.get(`users/${post.userId}`);
 setUser(res.data);
 };
 fetchUser();
 }, []);

 const likeHandler = () => {
 setLike(isLiked ? like - 1 : like + 1);
 setIsLiked(!isLiked);
 };
 return (
 <div className="post">
 <div className="postWrapper">
 <div className="postTop">
 <div className="postTopLeft">
 <img
 className="postProfileImg"
 src={user.profilePicture || PF + "person/noAvatar.png"}
 alt=""
 />
 <span className="postUsername">{user.username}</span>
 <span className="postDate">{post.date}</span>
 </div>
 <div className="postTopRight">
 <MoreVert />
 </div>
 </div>
 <div className="postCenter">
 <span className="postText">{post?.desc}</span>
 <img src={PF + post.photo} alt="" className="postImg" />
 </div>
 <div className="postBottom">
 <div className="postBottomLeft">
 <img
 className="likeIcon"
 src={`${PF}like.png`}
 onClick={likeHandler}
 alt=""
 />
 <img
 className="likeIcon"
 src={`${PF}heart.png`}
 onClick={likeHandler}
 alt=""
 />
 <span className="postLikeCounter">{like} people like it</span>
 </div>
 <div className="postBottomRight">
 <span className="postCommentText">{post.comment} comments</span>
 </div>
 </div>
 </div>
 </div>
 );
}
 
Son düzenleyen: Moderatör:
JSX:
{posts.map((p) => (
    <Post key={p.id} post={p} />
))}

Bir listeden .map ile ürettiğiniz tüm elementlerin key'leri farklı olmalı. Postların id'lerinin hepsinin farklı olduğundan emin misiniz?

Bunu, return'den hemen önce console.log(posts.map(({ id }) => id)); yazarak konsoldan teyit edebilirsiniz.

Eğer tüm ID'ler farklıysa hata, paylaştığınız iki componenttan başka bir componentta yaşanıyor olabilir. .map kullandığınız başka componentlar varsa onları da görmek faydalı olur hatta konsoldan tüm hatayı paylaşabilirseniz güzel olur.
 
JSX:
{posts.map((p) => (
    <Post key={p.id} post={p} />
))}

Bir listeden .map ile ürettiğiniz tüm elementlerin key'leri farklı olmalı. Postların id'lerinin hepsinin farklı olduğundan emin misiniz?

Bunu, return'den hemen önce console.log(posts.map(({ id }) => id)); yazarak konsoldan teyit edebilirsiniz.

Eğer tüm ID'ler farklıysa hata, paylaştığınız iki componenttan başka bir componentta yaşanıyor olabilir. .map kullandığınız başka componentlar varsa onları da görmek faydalı olur hatta konsoldan tüm hatayı paylaşabilirseniz güzel olur.
.map i bi tek bu componentte kullandım. Muhtemelen id'ler aynı. Consoleda farklı bir hata verdi çünkü. Consoledaki hataları ekran görüntüsü olarak ekledim.

JSX:
{posts.map((p) => (
    <Post key={p.id} post={p} />
))}

Bir listeden .map ile ürettiğiniz tüm elementlerin key'leri farklı olmalı. Postların id'lerinin hepsinin farklı olduğundan emin misiniz?

Bunu, return'den hemen önce console.log(posts.map(({ id }) => id)); yazarak konsoldan teyit edebilirsiniz.

Eğer tüm ID'ler farklıysa hata, paylaştığınız iki componenttan başka bir componentta yaşanıyor olabilir. .map kullandığınız başka componentlar varsa onları da görmek faydalı olur hatta konsoldan tüm hatayı paylaşabilirseniz güzel olur.
Post id'lerini yanlış çağırmışım düzeldi şimdi. Teşekkür ederim cevabınız için.
 

Dosya Ekleri

  • Ekran görüntüsü 2024-06-08 121226.png
    Ekran görüntüsü 2024-06-08 121226.png
    73,6 KB · Görüntüleme: 24
  • Ekran görüntüsü 2024-06-08 122500.png
    Ekran görüntüsü 2024-06-08 122500.png
    124,4 KB · Görüntüleme: 22
Son düzenleme:

Technopat Haberler

Geri
Yukarı