본문 바로가기
Study/React

[노마드코더] ReactJS로 영화 웹 서비스 만들기 - State Functions

by 22정민 2023. 1. 11.

https://nomadcoders.co/react-for-beginners

 

ReactJS로 영화 웹 서비스 만들기 – 노마드 코더 Nomad Coders

React for Beginners

nomadcoders.co

<!DOCTYPE html>
<html>
  <body id="root"></body>
  <!--React import-->
  <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
  <!--React-dom import-->
  <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
  <!--Babel standalone-->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  <script type="text/babel">
    const root = document.getElementById("root");
    function App() {
      const [counter, setCounter] = React.useState(0);
      const onClick = () => {
        //setCounter(counter + 1);
        setCounter((current) => current + 1);
      };
      return (
        <div>
          <h3>Total clicks: {counter}</h3>
          <button onClick={onClick}>Click me</button>
        </div>
      );
    }
    ReactDOM.render(<App />, root);
  </script>
</html>

 

<state를 셋팅해주는 2가지 방법>

1. 직접 값을 설정 -> setCounter(counter + 1)

2. 함수를 전달 -> setCounter((current) => current + 1)

 

 

만약 현재 값을 가지고 계산을 해야 한다면, 

setCounter((current) => current + 1); 로 작성

setCounter 함수의 첫번째 argument는 현재 값(current)이고, 이 함수의 return값이 새로운 state(current + 1)가 됨

따라서 이 함수가 무엇을 return하던지 그것이 새로운 state가 됨

※ current라고 넣어도 작동하는 이유는, 함수일 경우에 저장되어 있는 값을 인자로하여 리턴한 값을 최종적으로 업데이트

 

이 코드가 더 안전한 이유는

리액트가 이 current가 확실히 현재 값이라는 것을 보장 하고 있음(우리가 정확히 원하는 값으로 계산할 수 있도록)

 

!현재 state를 기반으로 계산을 하고 싶다면 함수를 이용!