강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

태리바이트님의 프로필 이미지
태리바이트

작성한 질문수

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

useOptimistic 실전 - 1

useOptimistic 실전-1 useState

작성

·

14

0

import axios from "axios";
import { Heart } from "lucide-react";
import { useEffect, useState, useTransition } from "react";

interface Posts {
  id: number;
  isLike: boolean;
}

export default function App() {
  const [posts, setPosts] = useState<Posts[]>([]);
  const [isPending, startTransition] = useTransition();

  useEffect(() => {
    startTransition(async () => {
      const { data } = await axios.get("http://localhost:3000/posts");
      setPosts(data);
    });
  }, []);

  if (isPending) return <h3>loading..</h3>;

  return (
    <>
      {/* fill: 'none', stroke: 'currentColor' */}
      {/* fill: 'rgb(255,0,0)', stroke: 'rgb(255,0,0)' */}

      {posts.map((post) => {
        <Heart
          key={post.id}
          fill={post.isLike ? "rgb(255,0,0)" : "none"}
          stroke={post.isLike ? "rgb(255,0,0)" : "currentColor"}
        />;
      })}
    </>
  );
}
image.png

 

 

posts에 값이 설정되지 않는데요. 이런 경우가 처음이라 다른 예제는 이런 적이 없었습니다.

몇 시간에 해보는데 뭐가 잘못되었는지 잘 모르겠네요.

답변 2

0

수코딩님의 프로필 이미지
수코딩
지식공유자

안녕하세요.

해결하셨다니 다행입니다. 😀

0

<Heart key={post.id} fill={post.isLike ? "rgb(255,0,0)" : "none"} stroke={post.isLike ? "rgb(255,0,0)" : "currentColor"} />;

마지막 ; 이게 문제였습니다. 프리티어가 자꾸 ; 붙여줘서 그랬네요.

태리바이트님의 프로필 이미지
태리바이트

작성한 질문수

질문하기