<div id="root"></div>
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">
'use strict'
function ReactButton() { // 함수컴포넌트
// 구조분해
const [Liked, setLiked] = React.useState(false);
// 무엇으르 하든 결국 return 하는 것은 화면이다.
if(liked) {
return 'React Message When You Click On Button!';
}
return (
<button onClick={() =>{ setLiked(true); }}>Like</button>
)
}
</script>
<script type="text/babel">
ReactDOM.createRoot(document.querySelector('#root')).render(<ReactButton />); // React18버전코드
</script>
※ 함수 컴포넌트를 사용하면 .this를 사용하지 않아도 된다.
// useState 사용방법
const [news, setNews] = React.useState(['뉴스1','뉴스2','뉴스3','뉴스4','뉴스5'])
const [category, setCategory] = React.useState(['스포츠','연예','경제','시사','정치'])
if(category === '스포츠') {
return '스포츠화면';
}
return (
<button onClick={() =>{ setCategory('스포츠'); }}>SPORTS</button>
)
useState를 잘 활용하고 브라우저 화면상으로 보았을때 useState의 구성을 대충 짐작할 수 있어야 좋은 리액트 개발자가 될 수 있다.
onClick 이외에도 onChange, onKeyup, onKeydown, onLoad, onblur, onKeypress 등 여러가지 이벤트들을 활용할 수 있다.
<html>
<head>
<meta charset="UTF-8"/>
<title>구구단</title>
</head>
<body>
<div id="root"></div>
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">
'use strict';
const GuGuDan = () => {
const [first, setFirst] = React.useState(Math.ceil(Math.random() * 9));
const [second, setSecond] = React.useState(Math.ceil(Math.random() * 9));
const [value, setValue] = React.useState('');
const [result, setResult] = React.useState('');
const inputEl = React.useRef(null);
const onSubmitForm = (e) => {
e.preventDefault();
if (parseInt(value) === first * second) {
setResult('정답입니다.');
setFirst(Math.ceil(Math.random() * 9));
setSecond(Math.ceil(Math.random() * 9));
setValue('');
inputEl.current.focus();
} else {
setResult('정답이 아닙니다.');
setValue('');
inputEl.current.focus();
}
};
return (
<React.Fragment>
<div>{first} 곱하기 {second}는?</div>
<form onSubmit={onSubmitForm}>
<input
ref={inputEl}
type="number"
value={value}
onChange={(e) => setValue(e.target.value)}
/>
<button>정답제출</button>
</form>
<div id="result">{result}</div>
</React.Fragment>
);
};
</script>
<script type="text/babel">
ReactDOM.createRoot(document.querySelector('#root')).render(<GuGuDan/>);
</script>
</body>
</html>
onChange={(e) => setValue(e.target.value)} 에서 빈공백 ' '로 만들어져 있는 useState 의 value 상태를 onChange를 통해 이벤트 리스너와 함께 value의 값이 변화할때 같이 setValue(e.target.value)를 실행하여 setValue로 value상태를 바꿔주는 부분이다.
리액트[React]_리액트기초_구성요소 및 바벨라이브러리_리액트17버전과 리액트18버전의 차이 (0) | 2023.02.19 |
---|---|
리액트[React]_DOM(Document Object Model)과 Document.ready와 Window.onload의 차이 (0) | 2023.02.18 |
댓글 영역