inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 리액트 A-Z[19버전 반영]

todo-app의 할일 목록 부분(List.js)관련해서 질문이 있습니다.

185

sky

작성한 질문수 3

0

안녕하세요. todo-app의 할일 목록 부분 코드 관련 질문이 있어서 올립니다.

import React from "react";

export default function List({ todoData, setToDoData }) {
const btnStyle = {
color: "#fff",
border: "none",
padding: "5px 9px",
borderRadius: "50%",
cursor: "pointer",
float: "right",
};

const handleCompleteChange = (id) => {
let newToDoData = todoData.map((data) => {
if (data.id === id) {
data.completed = !data.completed;
}
return data;
});
setToDoData(newToDoData);
};

const getStyle = (completed) => {
return {
padding: "10px",
borderBottom: "1px #ccc dotted",
textDecoration: completed ? "line-through" : "none",
};
};

const handleClick = (id) => {
let newToDoData = todoData.filter((data) => data.id !== id);
console.log("newToDoData", newToDoData);
setToDoData(newToDoData);
};

return (
<div>
{todoData.map((data) => (
<div style={getStyle(data.completed)} key={data.id}>
<input
type="checkbox"
defaultChecked={false}
onChange={() => {
handleCompleteChange(data.id);
}}
/>
{data.title}
<button
style={btnStyle}
onClick={() => handleClick(data.id)}
>
x
</button>
</div>
))}
</div>
);
}

첫번째 질문.

handleCompleteChange와 handleClick함수는 왜 콜백함수로 전달을 해야 정상적으로 작동하는지 궁금합니다.

(초록색으로 표시한 부분)

두번째 질문.

어떤 경우에 콜백함수를 이용해서 함수를 전달해야하나요??

답변 부탁드립니다.

감사합니다.

Next.js react typescript tdd redux

답변 1

1

John Ahn

안녕하세요 kskname1님 

좋은 질문 감사합니다. 

결국 1번과 2번 질문이 같은 것 같습니다. 

현재 onClick에서는 현재 data.id라는 인수가 필요합니다. 

만약에 인수가 필요치 않다면 onSubmit 이벤트가 발생했을 때처럼 this.handleClick(클래스형 컴포넌트에서) handleClick(함수형 컴포넌트에서) 해주셔도 됩니다! 

그래서 인수가 필요할 시와 아닐 시에 다르게 함수를 불러주시면 됩니다. 

감사합니다.

0

sky

답변해 주셔서 감사드립니다.

강의 소스 코드 압축 풀기 오류

0

93

1

런타임 에러 ㅠㅠ

0

105

1

강의대로 따라갔는데 에러보다 api키로 들어간 넷플릭스? 그런게 렌더링 되지 않습니다 ㅠ

0

116

1

안녕하세요 개발과 상관없는 질문입니다만

0

124

1

리액트 라우터 관련

0

119

1

react-beatiful-dnd에서 문제가 발생합니다.

0

108

1

react19에서는 react-beautiful-dnd가 설치되지 않습니다.

0

833

1

useEffect로 사용을 해도 되나요?

0

210

1

넷플릭스 오리지널 제외하고 슬라이드가 동작을 안합니다.

0

202

1

react 19의 useActionState가 더이상 isPending은 지원하지 않는 듯합니다

0

288

2

리액트 dockderfile 작성 시 COPY 질문

0

156

1

next.js에서부터는 react query 필요없는지

0

328

1

기능

0

204

1

오류가 안보여요

0

207

1

CSS

0

225

1

local storage

0

224

1

list컴포넌트 생성하기

0

230

1

검색어 입력 후 초기화하는 방법 궁금합니다!

0

343

1

Banner.css에 대해서

0

465

1

플러그인이 추천을 안해줍니다

0

335

1

마이너스버튼 테스트

0

285

2

리액트 서버 실행 오류

0

1170

2

오류메세지는 확인했는데 어떻게 고쳐야 할지 모르겠습니다 ㅠ

0

307

1

creactStore질문이요

1

293

2