日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Vue3使用JSX的方法實例(筆記自用)

瀏覽:24日期:2022-06-01 14:13:26
目錄
  • 1. Vue3 中 JSX 的基本應(yīng)用
    • 1.1 在 .vue 文件中使用 jsx
    • 1.2 .jsx文件格式
  • 2. JSX 和 template 的區(qū)別
    • 2.1 插值
    • 2.2 自定義組件
    • 2.3 屬性和事件
    • 2.4 條件和循環(huán) 
  • 3. JSX 和 slot (體會 JSX 的優(yōu)越性)
    • 總結(jié) 

      1. Vue3 中 JSX 的基本應(yīng)用

      • 使用 .jsx 格式文件和 defineComponent
      • defineComponent 可傳入 setup 函數(shù) 或 組件的配置
      • 插值使用單括號 {}

      1.1 在 .vue 文件中使用 jsx

      // 父
       
      <template>
        <div>
          <JSXDemo1 />
        </div>
      </template>
       
      <script>
      import JSXDemo1 from "@/components/JSXDemo1.vue"
      export default {
        name: "HomeView",
        components: {
          JSXDemo1
        }
      }
      </script>
       
      // JSXDemo1.vue
       
      <script>
      import { ref } from "vue"
      export default {
        setup () {
          const countRef = ref(200)
       
          const render = () => {
            return <p>DEMO1--{countRef.value}</p> // jsx就是js語法,所以要加 .value
          }
          return render
        }
      }
      </script>

      1.2 .jsx文件格式

      // 父組件
       
      import { defineComponent, ref } from "vue"
      import JSXChild from "./JSXChild.jsx"
       
      export default defineComponent(() => { // 傳入 setup 函數(shù)
        const countRef = ref(300)
       
        const render = () => {
          return <>
            <p>DEMO2--{countRef.value}</p>
            <JSXChild a={countRef.value + 100}></JSXChild>
          </>
        }
        return render 
      })
       
      // 子組件 JSXChild.jsx
       
      import { defineComponent } from "vue"
       
      export default defineComponent({ // 傳入組件配置
        props: ["a"],
        setup (props) {
          const render = () => {
            return <>
      <p>child {props.a}</p>
            </>
          }
          return render
        }
      })

      2. JSX 和 template 的區(qū)別

      • 語法上有很大區(qū)別
      • JSX 本質(zhì)就是 js 代碼,可以使用 js 的任何能力
      • template 只能嵌入簡單的 js 表達(dá)式,其他需要指令,如 v-if
      • JSX 已經(jīng)成為 ES 規(guī)范,template 還是 Vue 自家規(guī)范
      • 本質(zhì)是相同的:
      • 都會被編譯為 js 代碼(render 函數(shù))

      2.1 插值

      • template 使用雙括號 {{ }}
      • jsx 使用單括號 { }
      // template
       
      <template>
        <p>{{ name }} -- {{ age }}</p>
      </template>
       
      // jsx
       
      const render = () => {
          return <>
      <p>child {props.a}</p>
          </>
      }

      2.2 自定義組件

      • template 組件名使用時可改變大小寫或是駝峰,jsx 不可更改
      • 引入動態(tài)參數(shù),template使用冒號+參數(shù)名(:msg='msg'),jsx 不需要冒號
      // template
       
      <template>
        <div>
          <watch-effect :msg="msgRef"/>
        </div>
      </template>
       
      <script>
      import { ref } from "vue"
      import WatchEffect from "@/components/WatchEffect.vue"
      export default {
        name: "HomeView",
        components: {
          WatchEffect,
        },
        setup () {
          const msgRef = ref("123")
          return {
      msgRef
          }
        }
      }
      </script>
       
      // jsx 組件名稱不可變,要和引入名字保持一致
       
      import { defineComponent, ref } from "vue"
      import JSXChild from "./JSXChild.jsx"
       
      export default defineComponent(() => {
        const countRef = ref(300)
       
        const render = () => {
          return <>
            <p>DEMO2--{countRef.value}</p>
            <JSXChild a={countRef.value + 100}></JSXChild>
          </>
        }
        return render
      })

      2.3 屬性和事件

      template 區(qū)分屬性和事件的寫法,jsx 不區(qū)分
      // jsx 屬性和事件的寫法一樣
       
      import { defineComponent, ref } from "vue"
      import JSXChild from "./JSXChild.jsx"
       
      export default defineComponent(() => {
        const countRef = ref(300)
       
        function onChange () {
          console.log("onChange")
        }
        const render = () => {
          return <>
            <p>DEMO2--{countRef.value}</p>
            <JSXChild a={countRef.value + 100} change={onChange}></JSXChild>
          </>
        }
        return render
      })

      2.4 條件和循環(huán) 

      條件 template 使用 v-if 指令,jsx 在表達(dá)式中使用 && (類似 if( a && b))
      // template v-if
       
      <template>
        <p v-if="flagRef">template demo</p>
        <button @click="changeFlagRef">click</button>
      </template>
      <script>
      import { ref } from "vue"
      export default {
        setup () {
          const flagRef = ref(true)
       
          function changeFlagRef () {
            flagRef.value = !flagRef.value
          }
       
          return {
            flagRef,
            changeFlagRef
          }
        }
      }
      </script>
       
      // jsx &&符號判斷
       
      import { defineComponent, ref } from "vue"
      import JSXChild from "./JSXChild.jsx"
       
      export default defineComponent(() => {
        const flagRef = ref(true)
       
        function changeFlagRef () {
          flagRef.value = !flagRef.value
        }
       
        const render = () => {
          return <>
            <p onClick={changeFlagRef}>DEMO2--{flagRef.value.toString()}</p>
            {flagRef.value && <JSXChild a={flagRef.value}></JSXChild>}
          </>
        }
        return render
      })
       循環(huán) template 使用 v-for 指令,jsx 使用數(shù)組的 .map 函數(shù)
      // template v-for
       
      <template>
        <ul>
          <li v-for="item in state.list" :key="item">{{ item }}</li>
        </ul>
      </template>
      <script>
      import { reactive } from "vue"
      export default {
        setup () {
          const state = reactive({
            list: ["a", "b", "c"]
          })
       
          return {
            state
          }
        }
      }
      </script>
       
      // jsx 數(shù)組 .map 函數(shù)
       
      import { defineComponent, reactive } from "vue"
       
      export default defineComponent(() => {
        const state = reactive({
          list: ["a1", "b1", "c1"]
        })
       
        const render = () => {
          return <>
            <ul>
      {state.list.map(item => <li>{item}</li>)}
            </ul>
          </>
        }
        return render
      })

      3. JSX 和 slot (體會 JSX 的優(yōu)越性)

      • slot 是 Vue 發(fā)明的概念,為了完善 template 的能力
      • slot 一直是 Vue 初學(xué)者的“噩夢”,特別是:作用域 slot
      • 但使用 JSX 將很容易理解,因為 JSX 本質(zhì)就是 js

      總結(jié) 

      到此這篇關(guān)于Vue3使用JSX的文章就介紹到這了,更多相關(guān)Vue3使用JSX內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

      標(biāo)簽: JavaScript
      日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
      欧美另类综合| 国产区精品区| 国产精品一区二区av交换| 日韩在线网址| 一区二区三区四区精品视频| 麻豆精品91| 视频精品一区二区| 久久xxxx精品视频| 欧美激情亚洲| 日韩国产精品久久久| 日本在线观看不卡视频| 亚洲精品精选| 日本a口亚洲| 日韩中文影院| 欧美中文一区二区| 野花国产精品入口| 一区二区三区四区在线观看国产日韩| 亚洲久久在线| 国产欧美久久一区二区三区| 欧美a在线观看| 黄色aa久久| 国产99久久| 日韩在线a电影| 91精品国产自产精品男人的天堂| 91精品国产自产在线丝袜啪| 国产精品色在线网站| 丁香婷婷久久| 欧美性感美女一区二区| 日韩中文字幕亚洲一区二区va在线 | 成人精品高清在线视频| 激情国产在线| 99pao成人国产永久免费视频| 日韩精品一区第一页| 日本vs亚洲vs韩国一区三区二区| 日韩av一区二区三区四区| 老司机免费视频一区二区三区| 国产一区日韩| 欧美高清不卡| 日本一区中文字幕| 麻豆91精品视频| 国产专区一区| 色8久久久久| 美女视频黄免费的久久| 欧美一区二区性| 日韩欧美2区| 精品香蕉视频| 欧洲激情综合| 奇米亚洲欧美| 中文字幕系列一区| 蜜臀久久久99精品久久久久久| 国产精品日本一区二区不卡视频 | 亚洲精品国产偷自在线观看| 天堂久久av| bbw在线视频| 香蕉久久夜色精品国产| 国产精品久久久免费| 久久婷婷激情| 日韩高清成人在线| 天堂日韩电影| 欧美自拍一区| zzzwww在线看片免费| 首页亚洲欧美制服丝腿| 久久精品国产一区二区| 亚洲深夜福利| 韩国女主播一区二区三区| 99国产成+人+综合+亚洲欧美| 国产精品videossex| 国产一区日韩一区| 久久精品亚洲| 午夜一级在线看亚洲| 高清一区二区三区av| 亚洲一区二区小说| www.com.cn成人| 欧美亚洲自偷自偷| 亚洲电影在线一区二区三区| 国产精品久久久久久av公交车| 欧美搞黄网站| 国际精品欧美精品| 日产欧产美韩系列久久99| 蜜桃精品在线| 国产精品久一| 日韩激情中文字幕| 99在线|亚洲一区二区| 日韩激情啪啪| 日韩视频久久| 国产在线观看www| 国产欧美一区| 免费国产亚洲视频| 久久国产主播| 精品国产亚洲一区二区三区大结局| 日韩视频在线一区二区三区| 在线看片福利| 麻豆国产91在线播放| 日本不卡在线视频| 丝袜美腿高跟呻吟高潮一区| 久久久久国产精品一区三寸| 美女国产精品久久久| 亚洲毛片在线| 91超碰国产精品| 蜜桃视频在线网站| 精品国产黄a∨片高清在线| 久久黄色影视| 亚州欧美在线| 日韩中文字幕亚洲一区二区va在线| 999视频精品| 欧美黑人巨大videos精品| 亚洲三级视频| 噜噜噜久久亚洲精品国产品小说| 欧美精选一区二区三区| 成人免费电影网址| 国产精品二区不卡| 另类小说一区二区三区| 国产精品jk白丝蜜臀av小说| 日韩高清成人| 日本а中文在线天堂| 久久久久伊人| 六月丁香综合在线视频| 欧美激情亚洲| 九九九精品视频| 国产精品chinese| 国产探花在线精品一区二区| 日本午夜精品一区二区三区电影| 日韩欧美中文字幕电影| 亚洲bt欧美bt精品777| 在线精品一区| 男女激情视频一区| 免费在线观看精品| 喷白浆一区二区| 综合一区二区三区| 日本中文字幕一区二区| 日韩精品福利一区二区三区| 日韩在线观看一区二区三区| 婷婷综合福利| 91午夜精品| 国产精品hd| 久久久久亚洲精品中文字幕| 免费亚洲一区| 91一区二区| 久久免费高清| 久久国产电影| 91精品高清| 亚洲丝袜啪啪| 日韩高清在线不卡| 国产精品地址| 日韩av免费大片| 欧美日韩精品在线一区| 尤物网精品视频| 综合精品一区| 国产免费播放一区二区| 国产在线日韩精品| 高清不卡亚洲| 欧美aa国产视频| 视频一区视频二区在线观看| 日本va欧美va欧美va精品| 国产极品一区| 日韩不卡视频在线观看| 99热免费精品| 国产日韩一区二区三区在线| 久久久久久夜| 亚洲一区二区三区免费在线观看| 日韩欧美精品一区二区综合视频| 欧美黑人做爰爽爽爽| 中文字幕系列一区| 伊人国产精品| 久久香蕉网站| 91精品在线观看国产| 免费美女久久99| 精品国内亚洲2022精品成人| 精品中文字幕一区二区三区av| 午夜一区在线| 麻豆91精品视频| 国产一级一区二区| 国产日韩亚洲欧美精品| 色婷婷精品视频| 日韩精品三区四区| 色偷偷偷在线视频播放| 综合在线一区| 麻豆理论在线观看| 中文字幕av亚洲精品一部二部| 里番精品3d一二三区| 激情综合自拍| 91精品在线免费视频| 日韩精品一区二区三区免费观看| 亚洲人成高清| 欧美少妇精品| 日本欧美韩国一区三区| 午夜精品成人av| 亚洲综合中文| 丝袜美腿诱惑一区二区三区 | 亚洲一区二区成人| 久久久久久久久成人| 一区在线免费观看| 久久久久伊人| 亚洲区第一页| 中文字幕成在线观看| 亚洲精品日本| 日韩不卡视频在线观看| 国产日韩欧美一区在线| 欧美一区二区性| 美腿丝袜在线亚洲一区|