실습문제 1. UseEffect

UseEffect 실습문제

  • 아래 실습코드의 주석을 확인하고, 지시대로 코드를 완성하세요.


import { useEffect, useState } from "react";

// localStorage 저장용 키
const STORAGE_KEY = "autosave:text";

function AutoSaveEditor() {
  // 입력상태 관리용 state
  const [text, setText] = useState("");
  
  // 저장상태 관리용 state
  const [saved, setSaved] = useState(false);

  // 1. 자동저장기능 구현
  // - useeEffect와 setTimeout을 사용하여 사용자가 3초동안 값을 입력하지 않는 경우 현재 입력한 내용이 
  //   localStorage에 저장되도록구현하세요.
  // - 단, 입력한 값이 없는 경우에는 setTimeout이 실행되지 않도록 처리하세요.
  // - 한번 호출된 setTimeout함수가 실행되기 전에, 사용자가 값을 수정하는 경우 자동저장 되지 
  //   않도록 제거해주세요.(clearTimeout)
  // - 임시저장이 완료되면 saved상태값을 true로 변경되도록 하세요.
  // - 값을 입력하는 동안에는 saved상태값을 false로 변경되도록 하세요.

  // localStorage.setItem(key, value) : localStorage 데이터 저장메서드
  
  // 2. 저장된 데이터 로드 기능 구현
  // - 컴포넌트가 처음 마운트 될 때, localStorage에 저장된 데이터를 꺼내어 text에 업데이트 
  //   되도록 하세요.
  // - 
  // - localStorage.getItem(key) : localStorage 데이터 추출 메서드

  return (
    <div>
      <h2>Auto Save Editor</h2>
      <textarea
        value={text}
        onChange={(e) => setText(e.target.value)}
        placeholder="글을 입력해보세요..."
        rows={5}
        style={{ width: "100%", padding: "10px" }}
      />
      
      <p style={{ color: saved ? "green" : "gray" }}>
        {saved ? "✔ 임시 저장 완료됨" : "입력 중..."}
      </p>
    </div>
  );
}

export default AutoSaveEditor;

Last updated