본문 바로가기

프론트엔드/react

React (4) - Set State, Modifier, Auto Render

2023.04.18 - [프론트엔드/react] - React (3) - Set State, Good React!

 

* React (3) 코드에서 더욱 편하게 변경하기.

ㄴ 변경된 데이터를 보여주기 위해 render 함수를 추가 호출해야 한다.

ㄴ 데어타가 바뀔때마다 render함수를 호출해야한다.

ㄴ 변경되는 값이 많을 때 계속 render함수를 불러와야해서 불편함.

    (파일이 많거나, 폼, 로그인, 알림, 비디오 플레이어 등등 다룰때 계속 render을 불러와야한다)

 

 

React (3) - Set State, Good React!

DOCTYPE html> const root = document.querySelector("#root"); let counter = 0; function countUP() { counter = counter + 1; render(); } function render() { ReactDOM.render(, root); } const Container = () => ( Total clicks: {counter} Click me ); render(); * JS

juokey.tistory.com

 


[ 자동으로 render되는 기능으로 코드를 작성 ]

 

<!DOCTYPE html>
<html>

<body>
    <div id="root"></div>
</body>

<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">

    const root = document.querySelector("#root");

    function App() {
        const data = React.useState(0);
        console.log(data);
        return (
            <div>
                <h3>Total clicks: 0</h3>
                <button>Click me</button>
            </div>
        );
    };

    ReactDOM.render(<App />, root);

</script>

</html>
* const data = React.useState(0); 

-> [0, f]

0 : 여기서는 counter라는 data

f : counter 값을 변경할 수 있는 함수
let conter = 0;

function counterUP () {
counter = counter + 1;
}

이거랑 같은 뜻임!

array로된 값에 접근하기 위해서는 배열값 불러오는 형식을 사용하면 되지만 불편하다.

ex) <h3> Total Click : {data[0]} </h3>

 

 

* 쉽게 배열에 있는 요소들을 변수로부여하는 방법!

 

const food = ["tomato", "potato"]

const [myFavFood, mySecondFood] = food;

 

<!DOCTYPE html>
<html>

<body>
    <div id="root"></div>
</body>

<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">

    const root = document.querySelector("#root");

    function App() {
        const [counter, modifier] = React.useState(0);
        return (
            <div>
                <h3>Total clicks: {counter}</h3>
                <button>Click me</button>
            </div>
        );
    };

    ReactDOM.render(<App />, root);

</script>

</html>

 

 

* const [counter, modifier]  :  modifier, counter 값 변경해주는 함수 설정하기

 

 //이렇게해도 render을 한번더 해줘야 한다//

const root = document.querySelector("#root");

    function App() {
        let [counter, modifier] = React.useState(0);
        const onClick = () => {
            counter = counter + 1;
            console.log(counter);
        };
        return (
            <div>
                <h3>Total clicks: {counter}</h3>
                <button onClick={onClick}>Click me</button>
            </div>
        );
    };

    ReactDOM.render(<App />, root);

 

modifie함수는 counter값을 받고 렌더를 자동으로 해준다.

통상적으로 modifer이름 대신 [변수이름, Set+변수이름]으로 사용한다.

 

counter값 [state] 바뀌면 새로운 값을 가지고 function App() [컴포넌트]가 리렌더링 된다.

 

   //modifier는 자동으로 render을 해준다//
    
    Const root = document.querySelector("#root");

    function App() {
        const [counter, setCounter] = React.useState(0);
        const onClick = () => {
            setCounter(counter+1);
        };
        return (
            <div>
                <h3>Total clicks: {counter}</h3>
                <button onClick={onClick}>Click me</button>
            </div>
        );
    };

    ReactDOM.render(<App />, root);

 

 

반응형