baskets.push할때
안녕하세요. 강의를 진행하는데 서버가 죽은것같아 직접 배열을 만들어서 예제를 진행중입니다.
그런데 자꾸 문제가 생기네요,,
첫번째 클릭에서는 객체가 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>
</>
);
}
답변 2
0
안녕하세요!
localStorage.getItem("baskets") ?? "[]" 이부분을 localStorage.getItem("baskets") || "[]" 이렇게 바꿔보시겠어요?
위의 ?? 연산자는 널리쉬코알레싱으로 ||와는 다른 기능을 하는 연산자 입니다.
즉 비어있는 값일때 한번 실행을 하게 되는데, 따라서 처음에 한번 실행이 되고 이후에는 장바구니에 뭔가 담겨있기 때문에 실행이 안되는 것으로 보입니다.
감사합니다.😁
0
안녕하세요 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





