
<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 |