Dev/React
[React] #3. State
코딩삐약
2022. 5. 23. 17:47
<!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.getElementById("root");
let counter = 0;
function countUp() {
counter = counter + 1;
render(); // UI가 변경되도록 리렌더링 해준다.
}
function render() {
ReactDOM.render(<Container />, root);
}
const Container = () => (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={countUp}>Click me!</button>
</div>
);
render();
</script>
</html>
// React.useState() 사용
<!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.getElementById("root");
function App() {
// 배열의 요소에 각각 이름 붙여서 꺼내기 쉽게 한다.
/* 2. 변수에 데이터를 담는다 */
const [counter, setCounter] = React.useState(0); // [바꿀 수 있는 값, 함수]
const onClick = () => {
/* 3. 해당 변수에 담긴값을 바꾼다. */
setCounter(counter + 1); //counter = '값'을 넣고 리렌더링이 자동으로 됨
}
/* 1. 변수를 컴포넌트에 연결 */
return (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={onClick}>Click me!</button>
</div>
);
}
ReactDOM.render(<App />, root);
</script>
</html>
React.js 특 : 데이터가 바뀔때마다 컴포넌트를 리렌더링하고 UI를 refresh한다.
// modifier 함수로 state를 바꿀때, 새로운 값을 가지고 컴포넌트 전체가 재생성 됨
<!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.getElementById("root");
function App() {
const [counter, setCounter] = React.useState(0);
const onClick = () => {
//1. 직접 값을 설정
// setCounter(55);
//2. 현재 값에 계산한 값 설정
setCounter((current) => current + 1);
// 현재 state를 바탕으로 다음 state를 계산해내고 싶다면,
// 함수를 사용 (혼동 방지위해)
}
return (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={onClick}>Click me!</button>
</div>
);
}
ReactDOM.render(<App />, root);
</script>
</html>