Uncaught TypeError: Cannot read properties of undefined (reading 'map') 에러
5429
작성한 질문수 1
import React, {useState} from "react";
import "./App.css";
export default function App () {
const [todoData, setTodoData] = useState([
{
id:"1",
title:"공부하기",
completed: false,
},
{
id:"2",
title:"청소하기",
completed: false,
}
]);
const [Value,setValue] = useState(""); // 첫번째 인수는 변수 두번재 인수는 state를 정하는 변수
const btnStyle ={
color: "#fff",
border: "none",
padding: "5px 9px",
borderRadius: "50%",
cursor: "pointer",
float:"right",
};
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);
};
const handleChange = (event) => {
console.log("event",event.target.Value)
setTodoData(event.target.Value);
};
const handleSubmit = (event) =>{
console.log("event",event)
event.preventDefault(); // reload를 막아줌
// 새로운 할일 데이터
let newTodo ={
id: Date.now(),
title : Value,
completed: false,
};
// 원래 있던 할 일에 새로운 할일을 더해주기
setTodoData(prev => [...prev,newTodo]);
setValue("");
};
const handleCompleteChange = (id) => {
console.log("todoData",todoData)
let newTodoData = todoData.map((data) =>{
if(data.id === id){
data.completed = !data.completed;
}
return data;
});
setTodoData(newTodoData)
};
return (
<div className="container">
<div className="todoBlock">
<div className="title">
<h1>할일 목록</h1>
</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>
))}
<form style={{display:'flex'}} onSubmit={handleSubmit}>
<input
type="text"
name="value"
style={{flex:'10', pedding:'50'}}
placeholder="해야 할 일을 입력하세요."
value={Value}
onChange={handleChange}/>
<input
type="submit"
value="입력"
className="btn"
style={{flex:'1'}}
/>
</form>
</div>
</div>
);
}아래 코드에서 form에 어떠한 글자를 입력하면 Console 창에 왜 Uncaught TypeError: Cannot read properties of undefined (reading 'map')
에러가 발생하는지 도저히 모르겠습니다.
혹시 아시는분 답변 부탁드립니다.
감사합니다.
답변 1
2
안녕하세요
todoData?. map( 이런 식으로 물음표를 추가해서 해보시겠어요?
물음표에 뜻을 todoData && todoData.map
이것과 같습니다. todoData가 있을 때만 뒤에 로직을 수행한다는 것입니다.
아마 현재 todoData가 없는데 뒤에 저 부분을 렌더링 하려고 해서 그럽니다.
원래 1. 렌더링하고 2. useEffect가 실행되고 데이터를 가져오고 3. 가져온 데이터를 이용해서 다시 렌더링 합니다. 그러니 1번에서 현재 에러가 난 상태입니다.
감사합니다.
강의 소스 코드 압축 풀기 오류
0
71
1
런타임 에러 ㅠㅠ
0
85
1
강의대로 따라갔는데 에러보다 api키로 들어간 넷플릭스? 그런게 렌더링 되지 않습니다 ㅠ
0
101
1
안녕하세요 개발과 상관없는 질문입니다만
0
111
1
리액트 라우터 관련
0
101
1
react-beatiful-dnd에서 문제가 발생합니다.
0
103
1
react19에서는 react-beautiful-dnd가 설치되지 않습니다.
0
810
1
useEffect로 사용을 해도 되나요?
0
198
1
넷플릭스 오리지널 제외하고 슬라이드가 동작을 안합니다.
0
195
1
react 19의 useActionState가 더이상 isPending은 지원하지 않는 듯합니다
0
279
2
리액트 dockderfile 작성 시 COPY 질문
0
145
1
next.js에서부터는 react query 필요없는지
0
320
1
기능
0
195
1
오류가 안보여요
0
193
1
CSS
0
217
1
local storage
0
209
1
list컴포넌트 생성하기
0
223
1
검색어 입력 후 초기화하는 방법 궁금합니다!
0
331
1
Banner.css에 대해서
0
446
1
플러그인이 추천을 안해줍니다
0
321
1
마이너스버튼 테스트
0
279
2
리액트 서버 실행 오류
0
1156
2
오류메세지는 확인했는데 어떻게 고쳐야 할지 모르겠습니다 ㅠ
0
298
1
creactStore질문이요
1
284
2





