코딩/Today I Learn

React learning #6 to Do List ,map

코딩쪼렙 2022. 4. 6. 14:15
728x90

const food =[1,2,3,4]

[5,food]// [5,Array[5]] 배열 안에 숫자와 배열이 들어감

[5,..food]//[5,1,2,3,4] 배열 안의 elements가 들어감

 

setTodos((currentTodo)=>[Todo, ...currentTodo])

 

 

function App() {
    const [toDo, setToDo] = useState("");
    const [toDos, setToDos] = useState([]);
    const onChange = (event) => setToDo(event.target.value);
    const onSubmit = (event) => {
        event.preventDefault();
        if (toDo === "") {
            return; //to Do가 없으면 이 함수가 동작하지 않도록
        }
        setToDo(""); // submit후 input에 value값 삭제  초기화
        setToDos((currentArray) => {
            const newArray = [toDo, ...currentArray];
            console.log(newArray);
            return newArray;  해결       (https://stackoverflow.com/questions/36085726/why-is-setstate-in-reactjs-async-instead-of-sync).

        });
        console.log(toDos);
    };
    return (
        <div>
            <h1>My To Do List({toDos.length})</h1>
            <form onSubmit={onSubmit}>
                <input
                    onChange={onChange}
                    value={toDo}
                    type="text"
                    placeholder="Write your to do..."
                />
                <button>Add To Do</button>
            </form>
        </div>
    );
}

 


Map

 

["hi","there"].map((item)=>item.toUpperCase())

["Hi","There"]

map은 배열의 각 item에 적용 됨

총 2번 실행되어 새로운 배열을 만들어냄

 

console.log에 뜨는 경고

react-jsx-dev-runtime.development.js:87 Warning: Each child in a list should have a unique "key" prop.

map을 사용하면  react.js는 key를 입력하길 요구한다.

 

            <ul>
                {toDos.map((item, index) => (  map의 첫번 째 인자로는 value, 두번 째 인자로서 index를 받음 
                    <li key={index}>{item}</li>
                ))}
            </ul>
    );
}

 

https://github.com/UHyun-K/react-for-beginner/commit/f1adda8b2448f61c38473f15085d4b317be7197f

댓글수0