最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端vue3?setup使用教程

 更新時間:2022年02月19日 16:26:36   作者:悟世君子  
這篇文章主要為大家介紹了前端vue3架構(gòu)setup使用教程,詳細(xì)介紹?setup?的用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

vue3 中新增了 setup,它的出現(xiàn)是為了解決組件內(nèi)容龐大后,理解和維護(hù)組件變得困難的問題。即 vue 中 data、computed、methods、watch 等內(nèi)容非常多以后,同一業(yè)務(wù)邏輯的 data 中的數(shù)據(jù)和 methods 中的方法在 vue 文件中“相隔甚遠(yuǎn)”,看代碼時,經(jīng)常需要根據(jù) data 中的數(shù)據(jù)去搜索找到對應(yīng)的 methods 方法,上下跳躍查看代碼,非常不方便。而在 setup 中,則可以把 data 中的數(shù)據(jù)和 methods 方法寫在相臨的位置,方便查看和維護(hù)。

1、簡單使用

先簡單寫一下看看效果

筆者這里使用新建的 vue3 項目,直接在 App.vue 上進(jìn)行修改

<template>
  <div>{{name}}</div>
</template>
 
<script>
export default {
  setup() {
    return {
      name: "淚眼問花花不語,亂紅飛過秋千去"
    }
  }
}
</script>

原來寫在 data 中的 name,在 setup 中需要 return 返回

運行效果

2、修改 setup 中的變量值

先看下面代碼,再說在 setup 中如何修改

<template>
  <div>
    {{name}}
    <button @click="change">修改</button>
  </div>
</template>
 
<script>
export default {
  setup() {
    let name = "淚眼問花花不語,亂紅飛過秋千去"
    function change() {
      name = "人生自是有情癡,此恨不關(guān)風(fēng)與月"
    }
    return {
      name,
      change
    }
  }
}
</script>

按照常規(guī)邏輯,修改 setup 中的 name,會自然地寫出上面的代碼

但是這段代碼是不能完成 name 值的修改的,看運行效果

為什么 name 值沒有改變呢?因為上面代碼中 name 是非響應(yīng)式的

如果想要修改 name 值,就需要把它改成響應(yīng)式的,代碼如下

<template>
  <div>
    {{name}}
    <button @click="change">修改</button>
  </div>
</template>
<script>
import { ref } from 'vue'
export default {
  setup() {
    let name = ref("淚眼問花花不語,亂紅飛過秋千去")
    function change() {
      name.value = "人生自是有情癡,此恨不關(guān)風(fēng)與月"
    }
    return {
      name,
      change
    }
  }
}
</script>

使用 ref 對 name 進(jìn)行包裝

修改時使用 變量名.value 的語法

運行效果

除了使用 ref 外還可以使用 reactive ,二者都可以將原始數(shù)據(jù)類型轉(zhuǎn)換成一個帶有響應(yīng)式特性的數(shù)據(jù)類型

ref 和 reactive 有什么區(qū)別,ref 一般處理基本類型;reactive 處理復(fù)雜的數(shù)據(jù)類型

reactive 使用代碼

<template>
  <div>
    {{nameObj.name}}
    <button @click="change">修改</button>
  </div>
</template>
 
<script>
import {reactive} from 'vue'
export default {
  setup() {
    let nameObj = reactive({name: '今年花勝去年紅??上髂昊ǜ茫c誰同'})
    function change() {
      nameObj.name = "離愁漸遠(yuǎn)漸無窮,迢迢不斷如春水"
    }
    return {
      nameObj,
      change
    }
  }
}
</script>

運行效果

3、setup 形式下的父子組件通信

代碼寫成 setup 形式,如何實現(xiàn)父子組件通信,下面介紹

3.1、父傳子

在 components 目錄下新建 Article.vue 作為子組件

Article.vue 內(nèi)容

<template>
  <div>
    {{msg}}
    {{info}}
  </div>
</template>
 
<script>
export default {
  props:['msg'],
  setup(props) {
    console.log(props.msg)
 
    return {
      info:props.msg
    }
  }
}
</script>

在 setup 方法內(nèi)使用 props 來接收父組件傳過來的數(shù)據(jù)

App.vue 為父組件

在 App.vue 中引入 Article.vue

<template>
  <div>
    <Article :msg="name"></Article>
  </div>
</template>
 
<script>
import Article from '@/components/Article.vue' 
export default {
  components: {
    Article
  },
  setup() {
    return {
      name: '漸行漸遠(yuǎn)漸無書,水闊魚沉何處問'
    }
  }
}
</script>

運行效果

3.2、子傳父

3.2.1、子組件調(diào)用父組件方法

Article.vue 內(nèi)容

<template>
  <div>
    {{msg}}
    <button @click="sendToParent">子組件向父組件傳遞數(shù)據(jù)</button>
  </div>
</template>
 
<script>
export default {
  props:['msg'],
  setup(props, content) {
    console.log(props.msg)
    function sendToParent() {
      content.emit('change')
    }
    return {
      sendToParent
    }
  }
}
</script>

使用 setup 方法中 content 參數(shù)中的 emit

App.vue 內(nèi)容

<template>
  <div>
    <Article :msg="name" @change="changeName"></Article>
  </div>
</template>
<script>
import Article from '@/components/Article.vue' 
export default {
  components: {
    Article
  },
  setup() {
    function changeName() {
      alert('父組件事件被調(diào)用')
    }
    return {
      name: '漸行漸遠(yuǎn)漸無書,水闊魚沉何處問',
      changeName
    }
  }
}
</script>

運行效果

3.2.2、子組件向父組件傳遞數(shù)據(jù)

子組件向父組件傳遞數(shù)據(jù),父組件修改數(shù)據(jù)

Article.vue 內(nèi)容

<template>
  <div>
    {{msg}}
    <button @click="sendToParent">子組件向父組件傳遞數(shù)據(jù)</button>
  </div>
</template>
<script>
export default {
  props:['msg'],
  setup(props, content) {
    console.log(props.msg)
    let newName = '群芳過后西湖好,狼籍殘紅。飛絮濛濛。垂柳闌干盡日風(fēng)'
    function sendToParent() {
      content.emit('change', newName)
    }
    return {
      sendToParent
    }
  }
}
</script>

App.vue 內(nèi)容

<template>
  <div>
    <Article :msg="name" @change="changeName"></Article>
  </div>
</template>
<script>
import Article from '@/components/Article.vue' 
import {ref} from 'vue'
export default {
  components: {
    Article
  },
  setup() {
    let name = ref('漸行漸遠(yuǎn)漸無書,水闊魚沉何處問')
    function changeName(msg) {
      name.value = msg
    }
    return {
      name,
      changeName
    }
  }
}
</script>

App.vue 中的 name 要修改,所以使用 ref 包裝

運行效果

 4、setup 中使用生命周期函數(shù)

在 setup 里,生命周期鉤子前面加上 “on” 來訪問組件的生命周期鉤子

setup 是圍繞 beforeCreate 和 created 生命周期鉤子運行的,所以不需要顯式地定義它們

setup 內(nèi)部調(diào)用生命周期鉤子

代碼示例

<template>
  <div></div>
</template>
<script>
import { onBeforeMount, onMounted } from "vue"
export default {
  setup() {
    onBeforeMount(()=>{
      console.log('onBeforeMount')
    })
    onMounted(()=>{
      console.log('mouted')
    })
    return {}
  }
}
</script>

運行效果

以上就是前端vue3架構(gòu)setup使用教程的詳細(xì)內(nèi)容,更多關(guān)于vue3 setup教程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue3自定義指令的實踐示例

    Vue3自定義指令的實踐示例

    這篇文章主要為大家詳細(xì)介紹了Vue3中自定義指令的實踐,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2023-06-06
  • vue.js中window.onresize的超詳細(xì)使用方法

    vue.js中window.onresize的超詳細(xì)使用方法

    這篇文章主要給大家介紹了關(guān)于vue.js中window.onresize的超詳細(xì)使用方法,window.onresize 是直接給window的onresize屬性綁定事件,只能有一個,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • vue3+ts實際開發(fā)中該如何優(yōu)雅書寫vue3語法

    vue3+ts實際開發(fā)中該如何優(yōu)雅書寫vue3語法

    近嘗試上手 Vue3+TS+Vite,所以下面這篇文章主要給大家介紹了關(guān)于vue3+ts實際開發(fā)中該如何優(yōu)雅書寫vue3語法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 解決vue?app.js/vender.js過大優(yōu)化啟動頁

    解決vue?app.js/vender.js過大優(yōu)化啟動頁

    這篇文章主要為大家介紹了解決vue?app.js/vender.js過大優(yōu)化啟動頁過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link

    詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link

    這篇文章主要介紹了詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Vue3路由進(jìn)階實戰(zhàn)教程之參數(shù)傳遞與導(dǎo)航守衛(wèi)核心技術(shù)

    Vue3路由進(jìn)階實戰(zhàn)教程之參數(shù)傳遞與導(dǎo)航守衛(wèi)核心技術(shù)

    本文介紹了路由參數(shù)傳遞的進(jìn)階應(yīng)用技巧,包括路由配置與參數(shù)驗證、組件參數(shù)接收、查詢參數(shù)傳遞、導(dǎo)航守衛(wèi)以及性能優(yōu)化與最佳實踐,感興趣的朋友一起看看吧
    2025-03-03
  • 關(guān)于vue.extend的使用及說明

    關(guān)于vue.extend的使用及說明

    這篇文章主要介紹了關(guān)于vue.extend的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue中實現(xiàn)動態(tài)生成二維碼的方法

    vue中實現(xiàn)動態(tài)生成二維碼的方法

    這篇文章主要介紹了vue中實現(xiàn)動態(tài)生成二維碼的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Vue雙向數(shù)據(jù)綁定與響應(yīng)式原理深入探究

    Vue雙向數(shù)據(jù)綁定與響應(yīng)式原理深入探究

    本節(jié)介紹雙向數(shù)據(jù)綁定以及響應(yīng)式的原理,回答了雙向數(shù)據(jù)綁定和數(shù)據(jù)響應(yīng)式是否相同,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-08-08
  • vue?+?electron應(yīng)用文件讀寫操作

    vue?+?electron應(yīng)用文件讀寫操作

    這篇文章主要介紹了vue?+?electron應(yīng)用文件讀寫操作,如果要制作的應(yīng)用并不復(fù)雜,完全可以將數(shù)據(jù)存儲在本地文件當(dāng)中,然后應(yīng)用就可以通過這些文件進(jìn)行數(shù)據(jù)的讀寫,需要的朋友參考下吧
    2022-06-06

最新評論

郯城县| 囊谦县| 白城市| 木兰县| 芜湖县| 黔西县| 集贤县| 义乌市| 界首市| 株洲县| 武汉市| 改则县| 遵义市| 祁东县| 宜昌市| 图片| 恩平市| 河曲县| 四子王旗| 腾冲县| 宁明县| 辰溪县| 珲春市| 昆山市| 西宁市| 海丰县| 河源市| 玛沁县| 安顺市| 德安县| 瑞丽市| 驻马店市| 宁化县| 大兴区| 报价| 大渡口区| 宣恩县| 合作市| 汾阳市| 道真| 定南县|