ブラウザだけで動作するReactのサンプル

サンプル

以下のドキュメントの サンプル を参考に作成したサンプル

Reactをブラウザだけで動作させるサンプルは、このページになります。 また、このソースは以下になります。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>React test</title>
    <script src="https://unpkg.com/react@17/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>

    <!-- Don't use this in production: -->
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>

<body>
    <div id="app"></div>
    <div id="basic-event"></div>
    <div id="event-with-method"></div>
    <div id="multiple-event"></div>

    <script type="text/babel">
        ReactDOM.render(
            <h1>Reactのテスト</h1>,
            document.getElementById('app')
        );

        const Button1 = function() {
            const [ counter, setCounter ] = React.useState(0);
            return (
                <>
                    <button onClick={() => setCounter(counter + 1)} >ボタン1</button>
                    <p>ボタン1のクリック数 {counter} 回</p>
                </>
            );
        }
        ReactDOM.render(
          <Button1 />,
          document.getElementById('basic-event')
        );

        const Button2 = function() {
            const handleClick = (event) => {
                alert('Hello ' + '!')
                if (event) {
                    alert(event.target.tagName)
                }
            }
            return (
                <>
                    <button onClick={handleClick} >ボタン2</button>
                    <br /><br />
                </>
           )
        }
        ReactDOM.render(
            <Button2 />,
            document.getElementById('event-with-method')
        );
    
        const Button3 = function() {
            const [ counter, setCounter ] = React.useState(0);
            const [ sum, setSum ] = React.useState(0);

            const one = () => {
                setCounter(counter + 1);
            }
            const two = () => {
                setSum(sum + 3);
            }
            const handleClick = () => {
                one();
                two();
            }
            return (
                <>
                    <button onClick={handleClick} >ボタン3 (+3)</button>
                    <p>ボタン3のクリック数 { counter } 回。 合計は { sum }</p>
                </>
            );
        }
        ReactDOM.render(
            <Button3 />,
            document.getElementById('multiple-event')
        );
    </script>
</body>

</html>

Vue 3 で同じ機能を実装したサンプルは、以下になります。