본문 바로가기
프론트엔드 개발

React-Hooks : useState 연습하기

by jyamin 2021. 10. 8.
728x90

React에서 함수형 컴포넌트를 이용하면 클래스형 컴포넌트보다 훨씬 간단하게 코드를 작성할 수 있다. React-Hooks는 함수형 컴포넌트로 좀 더 나은 코드를 작성하는데 도움을 준다.

 

React에서는 컴포넌트 내에서 데이터를 저장하는데 state를 사용한다.

  • state : 컴포넌트 내에서 사용하는 변수
  • useState : 컴포넌트에서 사용하는 변수를 만들어주는 기능
  • setState : 컴포넌트에서 사용하는 변수를 변경해주는 기능

포맷은 이렇게.

const [state, setState] = useState("initial value")

1. 버튼을 누를 때마다 숫자가 커지게 하기

export default function StatePage() {

  const [count, setCount] = useState(0)

  const handleCount = () => {

       setCount(count + 1)

  }

  return (

     <>

         <div>{count}</div>

         <button onClick={handleCount}>Count</button>

     </>

  )

}

2. 버튼을 누를 때마다 인삿말 바뀌게 하기

export default function StatePage() {

    const [greet, setGreet] = useState("Hello!")

    const [sign, setSign] = useState("Sign in")

 

    const handleClick = () => {

        greet === "Hello!" ? setGreet("Welcome~") : setGreet("Hello!")

        sign === "Sign in" ? setSign("Sign out") : setSign("Sign in")

    }

    return (

        <>

            <div>{greet}</div>

            <button onClick={handleClick}>{sign}</button>

        </>

  )

}

3. 버튼을 누를 때마다 6자리의 랜덤한 토큰을 발급받고 초기화 하기

export default function StatePage() {

    const [token, setToken] = useState("000000")

    const [get, setGet] = useState(false)

    const [refresh, setRefresh] = useState(true)

 

    const getToken = () => {

        setToken(String(Math.floor(Math.random() * 1000000)).padStart(6, 0))

        setGet(true)

        setRefresh(false)

    }

 

    const refreshToken = () => {

        setToken("000000")

        setGet(false)

        setRefresh(true)

    }

    return (

        <>

            <div>{token}</div>

            <button onClick={getToken} disabled={get}>Get</button>

            <button onClick={refreshToken} disabled={refresh}>Refresh</button>

       </>

    )

}

728x90

'프론트엔드 개발' 카테고리의 다른 글

웹 렌더링 (Rendering on the Web)  (0) 2021.10.15
URI?? URL??  (0) 2021.10.08
클로저 (Closure)  (0) 2021.10.07
Module not found: Can't resolve 'xxx'  (0) 2021.07.24
타입스크립트를 사용해야 하는 이유  (0) 2021.07.19

댓글