inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

baskets.push할때

해결된 질문

426

ju han

작성한 질문수 15

0

 안녕하세요. 강의를 진행하는데 서버가 죽은것같아 직접 배열을 만들어서 예제를 진행중입니다.

그런데 자꾸 문제가 생기네요,,

첫번째 클릭에서는 객체가 localStorage에 저장이 되는데 그 이후부터 진행이 안됩니다. 이유가 무엇일까요,,

이모션 부분은 제외하고 전달드립니다ㅜ

import styled from "@emotion/styled";
import { Modal } from "antd";

interface IBasketsProps {
  id: number;
  writer: string;
  product: string;
  price: number;
}

const myBasket = [
  { id: 100, writer: "짱구", product: "액션가면 인형", price: 30000 },
  { id: 200, writer: "철수", product: "과외", price: 40000 },
  { id: 300, writer: "훈이", product: "도시락", price: 50000 },
  { id: 400, writer: "맹구", product: "시냇물 돌", price: 2000000 },
];

export default function BasketHomework() {
  const onClickBtn = (basket: IBasketsProps) => () => {
    const baskets: IBasketsProps[] = JSON.parse(
      localStorage.getItem("baskets") ?? "[]"
    );
    console.log(baskets);

    const alreadyIn = baskets.filter((el) => el.id === basket.id);
    if (alreadyIn.length === 1) {
      Modal.warning({ content: "이미 찜한 상품입니다." });
      return;
    }

    baskets.push(basket);
    localStorage.setItem("baskets", JSON.stringify(basket));
  };
  return (
    <>
      <CardWrapper>
        {myBasket.map((el, index) => (
          <Card key={index}>
            <Product>{el.product}</Product>
            <Writer>{el.writer}</Writer>
            <Price>{el.price}</Price>
            <button onClick={onClickBtn(el)}>장바구니 담기</button>
          </Card>
        ))}
      </CardWrapper>
    </>
  );
}

 

react node.js seo graphql next.js

답변 2

0

코드캠프 프론트엔드 멘토

안녕하세요!

localStorage.getItem("baskets") ?? "[]" 이부분을 localStorage.getItem("baskets") || "[]" 이렇게 바꿔보시겠어요?
위의 ?? 연산자는 널리쉬코알레싱으로 ||와는 다른 기능을 하는 연산자 입니다.
즉 비어있는 값일때 한번 실행을 하게 되는데, 따라서 처음에 한번 실행이 되고 이후에는 장바구니에 뭔가 담겨있기 때문에 실행이 안되는 것으로 보입니다.

감사합니다.😁

0

Camp_멘토

안녕하세요 juhan님
장바구니에 이미 있는경우에 대한 처리를 말씀하시는것 같은데
현재의 filter 외 지금 누른 item의 id가 배열에 include되어있는지를 검증하는 것이 좋을것같습니다

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

0

41

1

댓글 기능 구현 중 질문드립니다.

0

67

1

쿠폰코드 발급

0

147

2

example 서버 플레이그라운드, API 접속 모두 안됩니다.

0

89

2

문의드립니다!! ㅠㅠ

0

107

2

graphql 백엔드 서버가 포폴용 빼곤 접속이 안됩니다.

0

80

2

_app.js 작성 이후로 에러가 발생하네요

0

96

2

학습자료

0

72

2

학습자료가 안열립니다.

0

51

2

플레이 그라운드 퀴즈 문제 질문이 있습니다.

0

61

0

기존강의 구매자, 업데이트 끝인가요?

0

111

3

업데이트 버전 수강

0

89

2

완벽한 프론트엔드

0

136

2

나만의 쇼핑몰 샘플 페이지 접속 확인부탁드립니다.

0

84

1

graphql 접속이 안됩니다.

0

101

2

const, let 사용 질문 드립니다.

0

72

2

싸이월드 만들기 1탄 피드백 부탁드립니다.

0

123

2

회원가입 과제 피드백 부탁드립니다.

0

81

2

styled.span / styled.input "CSS 자동완성"

0

47

1

쿠폰 발급 관련

0

167

2

서버 502 error

0

247

2

쿠폰 다시 부탁드려도 될가여?

0

140

2

a태그 패딩했을때 왜 크기가 줄어들지 않고 늘어나나요

0

185

2

2분 44초 질문

0

132

3