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

詳解Vue3中setup函數(shù)的使用教程

 更新時(shí)間:2022年07月04日 08:08:54   作者:ed。  
在vue3版本中,引入了一個(gè)新的函數(shù),叫做setup,引入他的原因總結(jié)一下主要原因是:為了使用組合式 API,setup函數(shù)是Composition 的入口。本文將詳細(xì)介紹一下Vue3中setup函數(shù)的使用教程,感興趣的可以了解一下

vue2 和 vue3 開發(fā)的區(qū)別

首先,目前來(lái)說(shuō) vue3 發(fā)布已經(jīng)有一段時(shí)間了,但是呢,由于還處于優(yōu)化完善階段,對(duì)于 vue3 開發(fā)項(xiàng)目的需求不是很高,主要還是以 vue2 開發(fā)為主,但是相信,vue3 進(jìn)行項(xiàng)目開發(fā)是大勢(shì)所趨。

vue2 開發(fā)項(xiàng)目過程中,會(huì)存在代碼冗余和結(jié)構(gòu)雜亂問題,這是 vue3 主要解決的問題,vue3 可以將相關(guān)功能的代碼抽離分割在一起,方便開發(fā)者快速閱讀,提高項(xiàng)目代碼的可讀性和可維護(hù)性。

使用 setup 原因

在 vue3 版本中,引入了一個(gè)新的函數(shù),叫做 setup,引入他的原因總結(jié)一下主要原因是:為了使用組合式 API,setup 函數(shù)是 Composition 的入口。

為什么不繼續(xù)使用 vue2 當(dāng)中的選項(xiàng) API 了呢,原因也很簡(jiǎn)單,像 data、computed、methods、watch 在組織邏輯大多數(shù)的情況下都是沒有問題的,但是當(dāng)組件邏輯變得更加豐富,那么邏輯處理關(guān)注點(diǎn)就會(huì)越來(lái)越多,很容易導(dǎo)致組件閱讀和維護(hù)成本提高,通過 setup 函數(shù)能夠?qū)⒃摬糠诌壿嫵殡x成函數(shù),讓開發(fā)者不必在關(guān)心該部分的邏輯問題。

setup 用法

  • setup 函數(shù)是組合式 API 的入口。
  • setup 函數(shù)是啟動(dòng)頁(yè)面后自動(dòng)執(zhí)行的函數(shù)。
  • 頁(yè)面中所涉及的變量和方法等,都需要寫在 setup 函數(shù)中。
  • 在 setup 中定義的變量、方法需要通過 return 返回出去才可以使用,否則無(wú)法在視圖中使用。
  • setup 函數(shù)位于 created 和 beforCreated 鉤子之前,用來(lái)代替這兩個(gè)鉤子。

setup 可以接受哪些參數(shù)

setup 函數(shù)可以接受 props、context,其中, props 由于是響應(yīng)式數(shù)據(jù),不能直接解構(gòu)賦值,context 不是響應(yīng)式數(shù)據(jù),可以通過解構(gòu)賦值,setup 函數(shù)必須返回一個(gè)對(duì)象,只要返回對(duì)象,便可以向 vue2 的方式一樣使用返回的屬性或方法。

setup 詳解

setup 函數(shù)自動(dòng)執(zhí)行

上邊提到,setup 函數(shù)是頁(yè)面打開之后自動(dòng)執(zhí)行的一個(gè)方法,當(dāng)頁(yè)面打開會(huì)自動(dòng)執(zhí)行 setup 函數(shù)當(dāng)中的邏輯代碼。

<template>
  <div>
    <h1>setup 函數(shù)</h1>
  </div>
</template>
<script>
  export default {
    setup() {
      console.log('我是????.')
    }
  }
</script>

打開頁(yè)面,可以看到我們輸出打印的 我是????. 輸出在控制臺(tái)。

setup 函數(shù)定義變量

組件中所有的變量都要在 setup 函數(shù)中定義,并且需要在 setup 函數(shù)最后通過 return 返回,才可以像 vue2 一樣在模板中使用。

定義一個(gè)基本類型變量

在 setup 函數(shù)中,創(chuàng)建一個(gè) name 參數(shù),并且在頁(yè)面中渲染該字段的內(nèi)容。

<template>
  <div>
    <h1>setup 函數(shù)</h1>
    <h1>名稱:{{name}}</h1>
  </div>
</template>
<script>
  export default {
    setup() {
      const name = '我是????.'   // 定義一個(gè)基本類型變量
    }
  }
</script>

上面的代碼編寫完成,保存刷新頁(yè)面,發(fā)現(xiàn)名稱渲染出現(xiàn)問題,展示不出來(lái),同時(shí)控制臺(tái)報(bào)錯(cuò)告警。

出現(xiàn)這個(gè)問題的原因其實(shí)很簡(jiǎn)單,如果從 vue2 轉(zhuǎn)到 vue3 的人很容易就遇到這種問題,因?yàn)樯厦嫣岬竭^,在 setup 中創(chuàng)建的變量需要在 setup 函數(shù)最后通過 return 返回,才可以使用。

所以說(shuō)修改上面的代碼:

<template>
  <div>
    <h1>setup 函數(shù)</h1>
    <h1>名稱:{{name}}</h1>
  </div>
</template>
<script>
  export default {
    setup() {
      const name = '我是????.'   // 定義一個(gè)基本類型變量
      return { name }  // 將 name 參數(shù)拋出 【重要】
    }
  }
</script>

將創(chuàng)建的 name 參數(shù)拋出后,重新保存刷新頁(yè)面,數(shù)據(jù)渲染就正常了。

同樣,創(chuàng)建其他基本類型也是一樣的編寫方式。

<template>
  <div>
    <h1>setup 函數(shù)</h1>
    <h1>名稱:{{name}}</h1>
    <h1>年齡:{{age}}</h1>
    <h1>性別:{{sex}}</h1>
  </div>
</template>
<script>
  export default {
    setup() {
      const name = '我是????.'   // 定義一個(gè)基本類型變量
      const age = 10
      const sex = true
      return { name, age, sex }
    }
  }
</script>

切記,聲明的變量如果需要在頁(yè)面中展示,必須使用 return 將聲明的變量拋出。

setup 創(chuàng)建復(fù)雜數(shù)據(jù)類型

setup 函數(shù)創(chuàng)建復(fù)雜數(shù)據(jù)類型,例如數(shù)組,對(duì)象之類的,和基本數(shù)據(jù)類型相同,也是,必須通過 return 拋出后,才可以在頁(yè)面中使用。

<template>
  <div>
    <h1>setup 函數(shù)</h1>
    <h1>名稱:{{boy.name}}</h1>
    <h1>年齡:{{boy.age}}</h1>
    <h1>性別:{{boy.sex}}</h1>
    <p v-for="(item, index) in todo" :key="index">{{item}}</p>
  </div>
</template>
<script>
  export default {
    setup() {
      const boy = {
        name: '我是????.',
        age: 10,
        sex: true
      }
      const todo = ['彈吉他', '做作業(yè)', '練街舞']
      return { boy, todo }
    }
  }
</script>

保存刷新頁(yè)面,渲染正常。

setup 創(chuàng)建方法

除了變量,方法也是需要寫在 setup 函數(shù)當(dāng)中的,同時(shí)和變量一樣,需要 return 拋出才可以使用。

創(chuàng)建方法的方式有兩種,第一種就是很常見的通過 function 的方式創(chuàng)建,另一種使用過箭頭函數(shù)的方式創(chuàng)建。

      // 一、通過 function 的方式創(chuàng)建
      function btn() {
        console.log('按鈕被點(diǎn)擊了')
      }

      // 二、通過箭頭函數(shù)的方式創(chuàng)建
      const btn = () => {
        console.log('按鈕被點(diǎn)擊了')
      }

以上兩種方式都可以創(chuàng)建方法。

例如:在頁(yè)面添加一個(gè)按鈕,點(diǎn)擊按鈕打印一段話在控制臺(tái)輸出。

<template>
  <div>
    <h1>setup 函數(shù)</h1>
    <el-button type="primary" @click="btn">按鈕</el-button>
  </div>
</template>
<script>
  export default {
    setup() {
      // 通過箭頭函數(shù)的方式創(chuàng)建
      const btn = () => {
        console.log('按鈕被點(diǎn)擊了')
      }
      return { btn }  // 將時(shí)間拋出
    }
  }
</script>

保存代碼,刷新頁(yè)面,點(diǎn)擊按鈕在控制臺(tái)輸出內(nèi)容。

動(dòng)態(tài)更新數(shù)據(jù)

在 vue2 里面,可以通過雙向數(shù)據(jù)綁定動(dòng)態(tài)修改頁(yè)面內(nèi)容,vue3 當(dāng)然也是可以的。

例如,頁(yè)面上有一個(gè)名字,點(diǎn)擊按鈕,修改名稱內(nèi)容。

<template>
  <div>
    <h1>setup 函數(shù)</h1>
    <h1>姓名:{{name}}</h1>
    <el-button type="primary" @click="btn">修改內(nèi)容</el-button>
  </div>
</template>
<script>
  export default {
    setup() {
      const name = '????.'
      // 通過箭頭函數(shù)的方式創(chuàng)建
      const btn = () => {
        name = '我是????.'
      }
      return { name, btn }
    }
  }
</script>

保存上面代碼,刷新頁(yè)面,點(diǎn)擊按鈕之后,發(fā)現(xiàn)姓名沒有變成 我是????. 而是直接報(bào)錯(cuò)了。

為什么報(bào)錯(cuò)了累,稍微預(yù)告一下子,需要使用 ref 和 reactive 函數(shù)。

到此這篇關(guān)于詳解Vue3中setup函數(shù)的使用教程的文章就介紹到這了,更多相關(guān)Vue3 setup函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue 2源碼解析HTMLParserOptions.start函數(shù)方法

    Vue 2源碼解析HTMLParserOptions.start函數(shù)方法

    這篇文章主要為大家介紹了Vue 2源碼解析HTMLParserOptions.start函數(shù)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 使用electron打包Vue前端項(xiàng)目的詳細(xì)流程

    使用electron打包Vue前端項(xiàng)目的詳細(xì)流程

    這篇文章主要介紹了使用electron打包Vue前端項(xiàng)目的詳細(xì)流程,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)electron打包Vue有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • 使用md5在vue中的axios請(qǐng)求時(shí)加密API問題

    使用md5在vue中的axios請(qǐng)求時(shí)加密API問題

    這篇文章主要介紹了使用md5在vue中的axios請(qǐng)求時(shí)加密API問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue3通用API功能示例剖析

    Vue3通用API功能示例剖析

    這篇文章主要為大家介紹了Vue3通用API功能示例剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Vue打印錯(cuò)誤日志問題

    Vue打印錯(cuò)誤日志問題

    這篇文章主要介紹了Vue打印錯(cuò)誤日志問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue中實(shí)現(xiàn)動(dòng)態(tài)生成二維碼的方法

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

    這篇文章主要介紹了vue中實(shí)現(xiàn)動(dòng)態(tài)生成二維碼的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • vue項(xiàng)目運(yùn)行或打包時(shí),頻繁內(nèi)存溢出情況問題

    vue項(xiàng)目運(yùn)行或打包時(shí),頻繁內(nèi)存溢出情況問題

    這篇文章主要介紹了vue項(xiàng)目運(yùn)行或打包時(shí),頻繁內(nèi)存溢出情況的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vite配置文件如何加載深入剖析

    Vite配置文件如何加載深入剖析

    我們知道,Vite?構(gòu)建環(huán)境分為開發(fā)環(huán)境和生產(chǎn)環(huán)境,不同環(huán)境會(huì)有不同的構(gòu)建策略,但不管是哪種環(huán)境,Vite?都會(huì)首先解析用戶配置,那接下來(lái),本文就來(lái)與大家分析配置解析過程中?Vite?到底做了什么?即Vite是如何加載配置文件的
    2023-11-11
  • Vue 解決路由過渡動(dòng)畫抖動(dòng)問題(實(shí)例詳解)

    Vue 解決路由過渡動(dòng)畫抖動(dòng)問題(實(shí)例詳解)

    這篇文章主要介紹了Vue 解決路由過渡動(dòng)畫抖動(dòng)問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Vue3前端與Python(Django)后端接口簡(jiǎn)單代碼示例

    Vue3前端與Python(Django)后端接口簡(jiǎn)單代碼示例

    這篇文章主要介紹了如何使用Django創(chuàng)建項(xiàng)目和應(yīng)用,配置跨域訪問,并編寫視圖和API,同時(shí)還講述了如何使用Vue3創(chuàng)建項(xiàng)目,編寫組件調(diào)用后端API,需要的朋友可以參考下
    2025-01-01

最新評(píng)論

大姚县| 雅江县| 鄯善县| 宜州市| 灌南县| 安陆市| 商南县| 华坪县| 佛坪县| 阳信县| 兴安县| 康保县| 济宁市| 铁岭县| 扎兰屯市| 旌德县| 环江| 榆林市| 遂平县| 左云县| 项城市| 伊通| 桂东县| 洱源县| 大同县| 昌吉市| 高青县| 盐源县| 灌云县| 东宁县| 南阳市| 昌黎县| 巴林左旗| 明光市| 邛崃市| 沐川县| 错那县| 贵阳市| 保靖县| 桐城市| 扶余县|