영상의 api와는 다른 날씨 api를 사용해서 렌더링했다.
지난 시간의 api키를 재활용하여, 이번 영상 속에서는 axios 대신, fetch를 사용한다.
fetch대로 출력방식을 이 api의 데이터 구조에 맞게끔 스스로 수정하여 출력했다.
코드
리팩토링
1. 값을 e.target.value가 아닌, useRef로 받아오기
2. Enter key로 명령 전송시키기(윗 코드는 마우스로 버튼을 눌러야만 전송됨)
form 태그로 감싼 후, 데이터 전송요청 함수를 onSubmit 으로 관리.
ref={}로 태그를 참조하게끔 만든다.
추가 한 뒤, useState 함수를 event에서 참조형식의 값을 출력하도록 수정.
이대로 마무리하면 될 줄 알았는데 입력후 전송요청을 해도 안된다?
-> 아래처럼 e.preventDefault()사용
event.preventDefault()를 호출하는 이유는 HTML 폼의 기본 동작을 방지하기 위함입니다.
기본적으로, form 태그의 onSubmit 이벤트가 발생하면 페이지가 새로고침되거나 다른 페이지로 이동하는 것이 일반적인 동작입니다. 이를 방지하기 위해 event.preventDefault()를 사용하여 폼의 기본 동작을 중단합니다.
fetch와 같은 동적 데이터 통신은 새로고침에 의해 직접적으로 막히지 않지만, 페이지가 새로고침되면 현재 진행 중인 fetch 요청이 중단될 수 있습니다. 따라서 동적 웹 애플리케이션에서는 폼 제출 시 새로고침을 방지하여 fetch 요청이 원활하게 완료될 수 있도록 하는 것이 일반적입니다.
'🪁react > react 실습' 카테고리의 다른 글
useCallback 사용해보기 + uuid 사용해보기[자신감up 실습12] (0) | 2024.01.30 |
---|---|
vite + react 첫 사용해보기[자신감up 실습11] (0) | 2024.01.30 |
useRef, useState 응용한 채팅앱기본 [자신감up 실습9] (0) | 2024.01.29 |
리액트 라우터 [자신감up 실습8] (0) | 2024.01.29 |
리액트 컴포넌트 만들기(todo리스트)[자신감up 실습7] (0) | 2024.01.29 |