리액트에서 동적인 UI 만드는 방법

2023. 3. 25. 00:38· React

리동적인 UI 가 뭐나면, 유저가 조작시 형태가 바뀌는 

모달창, 탭, 서브메뉴, 툴팁, 경고문 등 그런 UI를 의미합니다.

 

동적인 UI 만드는 방법

1. html, css로 미리 UI 디자인을 다 해놓고

2. UI의 현재상태를 state 로 저장해두고

3. state에 따라서 UI 가 어떻게 보일지 조건문 등으로 작성

 

1번은 했으니 2번부터 할거임

 

 

 

 

step 2. UI의 현재상태를 state로 저장

state 하나 만들고, 거기에 현재 UI의 상태정보를 저장해두라는 소리

 

let [modal, setModal] = useState(false);

useState 안에 무슨 자료를 넣어야 되냐면 정말 마음대로 하면됨

모달창은 열림 or 닫힘 이 두개 상태밖에 없기 때문에 그거 2종류만 표현할 수 있는 자료형이면 됨

나는 코딩애플님처럼 true/false 로 가겠음

 

 

step3. state 에 따라서 UI가 어떻게 보일지 작성
function App(){

  let [modal, setModal] =useState(false);
  return (
   저 state가 true면 <Modal></Modal>
   false면 아무것도 보여주지 마세요
  )
}

자바슥에서서는 if/else 구문을 썻지만, JSX안에서는 if else 문법을 바로 사용할 수 X

대신에 삼항연산자라는게 사용가능합니다

 

조건식 ? 조건식이 참일 때 실행할 코드 : 조건식 거짓일때 실행할 코드
function App (){

  let [modal, setModal] = useState(false);
  return (
    <div className="app">
      (생략)
      {
        modal == true ? <Modal></Modal> : null
      }
    </div>
  )
}

 

 

 

 

글제목 클릭하면 모달창을 띄우고 싶어요
function App (){

  let [modal, setModal] = useState(false);
  return (
    <div className="app">
    <button onClick={()=>{setModal(true)}}>{글제목[0]}</button>
      (생략)
      { 
        modal == true ? <Modal></Modal> : null
      }
    </div>
  )
}

글제목 누르면 state를 true 로 바꿔달라고 코드 짯습니다

 

그래서 리액트에서 UI만드는 과정을 비유하면

스위치와 전등만드는 거랑 비슷함

 

1. 일단 전등을 이쁘게 달아놓고

=> html/css 만들기

 

2. 스위치랑 연결하고 =>  

let [modal, setModal] = useState(false);

 

3. 스위치를 on으로 놓으면, 불이 켜지고 off 로 놓으면 불꺼지도록

{setModal(true)}}>{글제목[0]}
{ 
   modal == true ? <Modal></Modal> : null
  }

스위치는 State, 전등은 <Modal> 임

 

 

 

 

글제목을 한번 더 누르면 모달창이 닫혀야 합니다

글제목 클릭시

지금 state가 true면 setModal(false)

지금 state가 false면 setModal(true)

 

<div className='list'>
    <h4 onClick ={()=> { modal == true ? setModal(false) : setModal(true) }}>{글제목[2]}</h4> 
    <p>2월 17일 발행</p>
    </div>
    {
      modal == true ? <Modal/> : null
    }

또는 이렇게 써도됨

function App (){

  let [modal, setModal] = useState(false);
  return (
    <div>
      (생략)
      <button onClick={ ()=>{ setModal(!modal) } }> {글제목[0]} </button>
      { //기존의 모달과 반대 모달을 넣어줘~!
         modal == true ? <Modal></Modal> : null
      }
    </div>
  )
}

 

'React' 카테고리의 다른 글

props : 자식이 부모의 state 가져다쓰고 싶을 때  (1) 2023.03.26
map 함수 : 많은 div들을 반복문으로 줄이고 싶을 때  (0) 2023.03.25
컴포넌트 : 많은 div를 한단어로 줄이고 싶다면  (0) 2023.03.24
array, object state 변경하는 법  (0) 2023.03.24
리액트 state 변경하는 법  (0) 2023.03.24
'React' 카테고리의 다른 글
  • props : 자식이 부모의 state 가져다쓰고 싶을 때
  • map 함수 : 많은 div들을 반복문으로 줄이고 싶을 때
  • 컴포넌트 : 많은 div를 한단어로 줄이고 싶다면
  • array, object state 변경하는 법
becky(지은)
becky(지은)
becky(지은)
Know yourself, follow your passion
becky(지은)
전체
오늘
어제
  • 코딩 (187)
    • Clean Code (6)
    • American TV series (1)
    • Java (10)
    • Android (6)
    • php (3)
    • Javascript (54)
    • typescript (6)
    • React (45)
    • Web system (13)
    • Github (6)
    • Figma (3)
    • Algorithm (1)
    • Code States 44 (12)
    • reflect on myself (4)
    • ai (16)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로토타입
  • 기술면접
  • 생성자 함수
  • 상속
  • 코드스테이츠피그마
  • 자바별찍기
  • 자동형변환
  • 언어모델 성능평가
  • 생활코딩객체지향프로그래밍
  • props사용법
  • 파인튜닝기술면접
  • 자바스크립트
  • JavaScript
  • 멀티턴 데이터구조
  • 클린코드
  • 코딩스터디
  • 축약된 프롬프트 구조
  • 생활코딩 객체지향프로그래밍
  • 배치크기면접
  • 팀노바
  • 쇼핑몰
  • 코딩애플
  • 생활코딩객체지향
  • 코드스테이츠
  • redux-toolkit
  • 배치크기
  • 역할기반 멀티턴 데이터
  • 객체상속
  • 제이쿼리
  • 파트와 한 일

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
becky(지은)
리액트에서 동적인 UI 만드는 방법
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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