Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ksw_devlog

TIL 02.03 본문

TIL

TIL 02.03

kimcoach 2023. 2. 5. 19:05
DOM 관련 타입스크립트 리팩토링

 

function TodoInsert({onSubmit}) {
    const [content, setContent] = useState("");
    const ref = useRef();

    const handleChange = (e) => {
        setContent(e.target.value);
    };
    const handleSubmit = (e) => {
        e.preventDefault();
        if (!content) return;
        onSubmit(content);
        setContent("");
    };

    useEffect(() => {
        if (ref.current) {
            ref.current.focus();
        }
    }, []);
    
  return (
    <Container>
        <Form onSubmit={handleSubmit}>
        <TextInput
            ref={ref}
            type={"text"}
            placeholder="오늘 할 일"
            value={content}
            onChange={handleChange}
        />
        <InputBtn
            type="submit" 
            // onClick={handleSubmit}
        >
        작성
        </InputBtn>
        </Form>
    </Container>
  )
}

export default TodoInsert

=> Type script

 

function TodoInsert({onSubmit}: ToInsertprops) {
    const [content, setContent] = useState("");
    const inputRef = useRef<HTMLInputElement>(null);

    const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
        setContent(e.target.value);
    };
    const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
        e.preventDefault();
        if (!content) return;
        onSubmit(content);
        setContent("");
    };

    useEffect(() => {
        if (inputRef.current) {
            inputRef.current.focus();
        }
    }, []);
    
  return (
    <Container>
        <Form onSubmit={handleSubmit}>
        <TextInput
            ref={inputRef}
            type={"text"}
            placeholder="오늘 할 일"
            value={content}
            onChange={handleChange}
        />
        <InputBtn
            type="submit" 
            // onClick type 지정 ?
            // onClick={handleSubmit}
        >
        작성
        </InputBtn>
        </Form>
    </Container>
  )
}

export default TodoInsert

form태그나 input태그에 맞춰서 알맞은 타입을 지정해주면 된다.

'TIL' 카테고리의 다른 글

TIL 02.06 - 최종 프로젝트 1주차  (0) 2023.02.07
WIL 14주차  (0) 2023.02.06
TIL 02.02  (0) 2023.02.02
TIL 02.01  (0) 2023.02.01
TIL 01.31  (0) 2023.01.31