React

하위 컴포넌트에서 상위 컴포넌트로 state보내기

manyYun 2022. 9. 1. 11:52

출처 https://velog.io/@bellecode20/하위-컴포넌트에서-상위-컴포넌트로-state-전송하기

 

하위 컴포넌트에서 상위 컴포넌트로 state 전송하기

내가 학생을 추가하면, 캘린더 화면에서도 해당 날짜에 학생을 볼 수 있어야 한다. 1\. 유저가 정보를 입력한다.2\. 저장 버튼을 누른다.3\. 학생을 추가한다. \- 상위 컴포넌트로 전송한다.4\. 캘린

velog.io

 

  1. 부모 컴포넌트에서 useState 만들기
  const [todos, setTodos] = React.useState(["item 1", "item 2", "item 3"]);
  1. setTodo를 자식 컴포넌트에게 props로 전송한다.
    (1) 컴포넌트 렌더링 하는 부분(부모컴포넌트에서)에 props전송
  return (
    <>
      <TodoCount todos={todos}></TodoCount>
      <TodoList todos={todos}></TodoList>
      <AddTodo setTodos={setTodos}></AddTodo>
    </>
  );

(2) 렌더링하고싶은 부분에 {데이터}쓰기

function TodoCount({ todos }) {
  return <div>Total Todos:{todos.length}</div>;
}

(3) state바꾸는 컴포넌트는 set어쩌구로

  return(
  ...
  <AddTodo setTodos={setTodos}></AddTodo>
  ...
function AddTodo({ setTodos }) {
  function handleSubmit(event) {
    event.preventDefault();
    const todo = event.target.elements.todo.value;
    setTodos((prevTodos) => [...prevTodos, todo]);
  }
  return (
    <form onSubmit={handleSubmit}>
      <input type="text" id="todo"></input>
      <button type="submit">Add Todo</button>
    </form>
  );
}