사과먹는중
당근먹는하니
귀엽고 행복해
당근먹는하니
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 다람쥐🐿 (26)
    • C++ 공부빵야 (7)
    • 공부👻 (5)
    • 프론트엔드✏️ (228)
      • 코드캠프 (120)
      • 팀 프로젝트✨ (31)
      • 개인공부 (67)
    • 프론트엔드 - 바닐라js (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 공통 컴포넌트
  • 자바스크립트
  • 코딩
  • 팀프로젝트
  • 회고
  • react
  • ssg
  • 부트캠프
  • 코딩 부트캠프
  • JS
  • 리액트
  • emotion
  • typescript
  • 프론트엔드
  • javascrpit
  • 팀플
  • javascript
  • React-hook-form
  • algorithm
  • 알고리즘
  • next.js
  • graphql
  • CSS
  • refreshtoken
  • 배포
  • HTML
  • 코드캠프
  • 프로그래머스
  • 배열
  • 팀 프로젝트

최근 댓글

최근 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
당근먹는하니
프론트엔드✏️/개인공부

[react] 계산기/input 두 개가 서로 영향받게 하기

[react] 계산기/input 두 개가 서로 영향받게 하기
프론트엔드✏️/개인공부

[react] 계산기/input 두 개가 서로 영향받게 하기

2023. 3. 3. 17:38
728x90
반응형

 

 과제로 했던 환율계산기(?)를 가지고 구현 못 했던 거 구현해보고 리팩토링 할 거 해볼 생각이다~~~ 약간 신난닷^ㅁ^

 

WBTC input에 3을 입력하면 USDC가 계산되어 나오지만, USDC input은 변경할 수 없었다! 즉 역으로 하는 건 안 됐다. 

 

 근데 보다시피 처음에 숫자가 바로 입력이 안된다. 

숫자를 누르면 밑에 $0 이 뜨고 그 다음에 한 번 더 입력해야 입력이 된다. 

 

 그리고...! 무한리렌더링 되는 현상이 발생했다,,, 

setInput하면 allTokenPrice를 계산하고 그게 계산되면 다시 setInput하고... 그럼 어카냐 

 

일단 input, input2, token, token2 중에 하나라도 바뀌면 값이 다시 계산되어야 한다.

하지만 이걸 모두 의존성 배열에 한 번에 넣어버리면 작은 수정에도 리렌더링이 일어나서 좋지 않다.

 

token, token2가 변경되면 가격을 가져오는 api 호출되고 tokenPrice, token2Price가 바뀐다. 

 

...

 

일단 useEffect내에서 상태값을 변경하는 게 아니라 상태값 변경 함수를 만들어서 그걸로만 변경할 수 있게 수정하기!

 

그리고 handleChangeInput 함수 안에서 setState를 한다. 

 

 const handleChangeInput = useCallback((value: number) => {
    setInput2(value);
  }, []);

  const handleChangeInput2 = useCallback((value: number) => {
    setInput2(value);
  }, []);

input의 상태를 변경하고 onChange 이벤트 핸들러로 작동한다.

useCallback을 쓴 이유~ 같은 입력에 대해선 이전에 생성된 함수를 재사용하기 위해서!!

 

일단 엄마 옷 골라주러 가야해서 여기까지 , , ,

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드✏️ > 개인공부' 카테고리의 다른 글

[tailwind] tailwindcss 색상, 배경색 적용 안될 때  (0) 2023.03.23
[react] 계산기/ 무한 리렌더링, 맨 왼쪽의 0 좀 빼줘  (0) 2023.03.06
[react] 계산기/새로고침해도 선택값 유지하기  (0) 2023.03.03
[react] 리액트 리렌더링  (0) 2023.03.02
[firebase] googleLogin()  (0) 2023.02.07
    '프론트엔드✏️/개인공부' 카테고리의 다른 글
    • [tailwind] tailwindcss 색상, 배경색 적용 안될 때
    • [react] 계산기/ 무한 리렌더링, 맨 왼쪽의 0 좀 빼줘
    • [react] 계산기/새로고침해도 선택값 유지하기
    • [react] 리액트 리렌더링
    당근먹는하니
    당근먹는하니

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.