]> insang Git - back_nicezip_fastapi.git/commitdiff
react
authornewton-cn <insang@kakao.com>
Tue, 23 Apr 2024 09:56:31 +0000 (18:56 +0900)
committernewton-cn <insang@kakao.com>
Tue, 23 Apr 2024 09:56:31 +0000 (18:56 +0900)
static/js/Mybutton.js [new file with mode: 0644]
templates/main/index.html

diff --git a/static/js/Mybutton.js b/static/js/Mybutton.js
new file mode 100644 (file)
index 0000000..5545ac7
--- /dev/null
@@ -0,0 +1,14 @@
+function Mybutton(props) {
+    const [isClicked, setIsClicked] = React.useState(false);
+
+    return React.createElement(
+        'button',
+        { onClick: () => setIsClicked(true) },
+        isClicked ? 'Clicked!' : 'Click here!'
+    )
+}//리액트의 함수 컴포넌트
+
+//리액트 돔에 render 함수를 사용해서 리액트 컴포넌트를 돔 컨테이너에 렌더링하는 코드
+//이 코드가 필요한 이유->스크립트 태그를 사용해서 컴포넌트를 가져왔다고 해도, 컴포넌트가 화면에 보이는 것이 아니기 때문에!
+const domContainer = document.querySelector('#root');
+ReactDOM.render(React.createElement(Mybutton), domContainer);
\ No newline at end of file
index 86998d17fec35363204c173b89d9d93fa9020cdd..aab461d5cd3d56495ddc10176a18822e9abe59b2 100644 (file)
@@ -1,27 +1,17 @@
 <html>
     <head>
-        <script type="importmap">
-            { "imports": {
-                "vue":               "https://cdnjs.cloudflare.com/ajax/libs/vue/3.2.41/vue.esm-browser.prod.js",
-                "vue-router":        "https://cdnjs.cloudflare.com/ajax/libs/vue-router/4.1.5/vue-router.esm-browser.min.js",
-                "@vue/devtools-api": "https://unpkg.com/@vue/devtools-api@6.4.5/lib/esm/index.js"
-            } }
-        </script>
-        <script type="module">
-            import { createApp } from 'vue'
-            
-            createApp({
-              data() {
-                return {
-                  message: 'Hello World!'
-                }
-              }
-            }).mount('#app')
-        </script>
     </head>
     <body>
-        <div id="app">
-            <h1>{{ message }}</h1>
-          </div>
+        <h1>리액트를 사용하기 위한 사이트입니다.</h1>
+
+        <div id="root"></div><!--DOM Container(Root DOM Node) 추가-----버츄얼 돔의 시작점-->
+
+        <!-- React를 실행. -->
+        <!-- 주의: 사이트를 배포할 때는 "development.js"를 "production.min.js"로 대체하세요. -->
+        <script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
+        <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
+
+        <!-- 만든 React 컴포넌트를 실행. -->
+        <script src="/staic/js/Mybutton.js"></script>
     </body>
 </html>
\ No newline at end of file