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

Vue3?Hooks?模塊化抽離示例詳解

 更新時(shí)間:2022年09月19日 16:37:42   作者:wangfeng6075  
這篇文章主要為大家介紹了Vue3?Hooks?模塊化抽離示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

Vue3中的Hooks 其實(shí)就是業(yè)務(wù)邏輯的抽離,跟Vue2mixin 本質(zhì)上是一樣的:將當(dāng)前組件的業(yè)務(wù)邏輯抽離到一個(gè)公共的文件中,提高邏輯復(fù)用性,讓當(dāng)前組件看起來更加清爽,不太一樣的地方是我們封裝hooks 的時(shí)候一般是返回一個(gè)函數(shù)。

todoList demo

先來看一個(gè)簡單的例子:todoList demo。

新建一個(gè)Vue3+Ts的項(xiàng)目: npm init vite@latest 項(xiàng)目名稱:vue3-hooks, 使用TS,然后cd vue3-hooks -> npm install -> npm run dev 然后刪除不必要的內(nèi)容,新建一個(gè)type 文件夾存放所有的類型,新建一個(gè)TodoList.vue編寫我們的業(yè)務(wù)和視圖代碼:

目錄結(jié)構(gòu)

TodoList.vue代碼如下

<template>
  <h1>To do List</h1>
  添加一條記錄: <input type="text" v-model="data.toAddData.title" />
  <button @click="onAdd">添加</button>
  <br />
  <br />
  <table>
    <thead>
      <tr>
        <td>id</td>
        <td>名稱</td>
        <td>是否完成</td>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in data.list" :key="item.id">
        <td>{{ item.id }}</td>
        <td>{{ item.title }}</td>
        <td>{{ item.isFinished }}</td>
      </tr>
    </tbody>
  </table>
</template>
<script setup lang="ts">
import { reactive } from "vue";
import { IntTodoList } from "../type/todoList";
type DataType = {
  list: IntTodoList[];
  toAddData: IntTodoList;
};
const data = reactive<DataType>({
  list: [],
  toAddData: {
    id: 0,
    title: "",
    isFinished: false,
  },
});
const onAdd = () => {
  data.list.push({ ...data.toAddData, id: data.list.length + 1 });
};
</script>

定義的類型文件

interface IntTodoList {
  id: number;
  title: string;
  isFinished: boolean;
}
export type { IntTodoList };

邏輯抽離

 

  • 新建一個(gè)hooks 文件夾,在hooks 文件夾中新建一個(gè)todoList.ts 文件,將TodoList.vue 中的data 數(shù)據(jù) 和onAdd 方法 抽離到hooks文件中,并導(dǎo)出:
import { reactive } from "vue";
import { IntTodoList } from "../../type/todoList";
export default () => {
  type DataType = {
    list: IntTodoList[];
    toAddData: IntTodoList;
  };
  const data = reactive<DataType>({
    list: [],
    toAddData: {
      id: 0,
      title: "",
      isFinished: false,
    },
  });
  const onAdd = () => {
    data.list.push({ ...data.toAddData, id: data.list.length + 1 });
  };
  return { data, onAdd}
};

TodoList.vue 中導(dǎo)入:

<template>
  <h1>To do List</h1>
  添加一條記錄: <input type="text" v-model="data.toAddData.title" />
  <button @click="onAdd">添加</button>
  <br />
  <br />
  <table>
    <thead>
      <tr>
        <td>id</td>
        <td>名稱</td>
        <td>是否完成</td>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in data.list" :key="item.id">
        <td>{{ item.id }}</td>
        <td>{{ item.title }}</td>
        <td>{{ item.isFinished }}</td>
      </tr>
    </tbody>
  </table>
</template>
<script setup lang="ts">
import TodoListHooks from './hooks/todoList'
const {data, onAdd} = TodoListHooks()
</script>

如果其他組件需要data 數(shù)據(jù) 和 onAdd 方法,也可以導(dǎo)入hooks 文件使用,而且現(xiàn)在再來看TodoList.vue 文件看上去是不是非常清爽。 功能跟未抽離前是一樣的:

完整代碼

以上就是Vue3 Hooks 模塊化抽離示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue3 Hooks 模塊化抽離的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue實(shí)現(xiàn)一個(gè)動(dòng)態(tài)添加行的表格步驟詳解

    Vue實(shí)現(xiàn)一個(gè)動(dòng)態(tài)添加行的表格步驟詳解

    在Vue組件中定義表格的數(shù)據(jù)模型,通常使用一個(gè)數(shù)組來存儲(chǔ)表格的數(shù)據(jù),每一行數(shù)據(jù)可以是一個(gè)對(duì)象,對(duì)象的屬性對(duì)應(yīng)表格的列,這篇文章主要介紹了Vue實(shí)現(xiàn)一個(gè)動(dòng)態(tài)添加行的表格步驟詳解,需要的朋友可以參考下
    2024-05-05
  • VUE中的mapState和mapActions的使用詳解

    VUE中的mapState和mapActions的使用詳解

    在VUE項(xiàng)目中經(jīng)常會(huì)用到mapState和mapActions,mapState主要用于同步全局的變量或者對(duì)象,這篇文章主要介紹了VUE中的mapState和mapActions的使用,需要的朋友可以參考下
    2022-06-06
  • Vue全家桶入門基礎(chǔ)教程

    Vue全家桶入門基礎(chǔ)教程

    Vue 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架,和React,都自稱自己只關(guān)注視圖層,全家桶對(duì)于開發(fā)一個(gè)完整的中大型單頁面應(yīng)用項(xiàng)目所必須的所必須的插件和框架,本文給大家分享Vue全家桶入門基礎(chǔ)教程,感興趣的朋友一起看看吧
    2021-05-05
  • 在vue中使用echarts實(shí)現(xiàn)飛機(jī)航線水滴圖詞云圖效果

    在vue中使用echarts實(shí)現(xiàn)飛機(jī)航線水滴圖詞云圖效果

    這篇文章主要介紹了在vue中使用echarts實(shí)現(xiàn)飛機(jī)航線?水滴圖?詞云圖,通過引入中國地圖JS文件,會(huì)自動(dòng)注冊(cè)地圖,文中結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 詳解vue中v-on事件監(jiān)聽指令的基本用法

    詳解vue中v-on事件監(jiān)聽指令的基本用法

    這篇文章主要介紹了詳解vue中v-on事件監(jiān)聽指令的基本用法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法

    vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue2.0實(shí)現(xiàn)檢測無用的代碼并刪除

    vue2.0實(shí)現(xiàn)檢測無用的代碼并刪除

    這篇文章主要介紹了vue2.0實(shí)現(xiàn)檢測無用的代碼并刪除方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue elementUI table表格數(shù)據(jù) 滾動(dòng)懶加載的實(shí)現(xiàn)方法

    vue elementUI table表格數(shù)據(jù) 滾動(dòng)懶加載的實(shí)現(xiàn)方法

    這篇文章主要介紹了vue elementUI table表格數(shù)據(jù)滾動(dòng)懶加載的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • vue Tab切換以及緩存頁面處理的幾種方式

    vue Tab切換以及緩存頁面處理的幾種方式

    相信tab切換對(duì)于大家來說都不算陌生,后臺(tái)管理系統(tǒng)中多會(huì)用到。如果不知道的話,可以看一下瀏覽器上方的標(biāo)簽頁切換,大概效果就是這樣。
    2021-05-05
  • vue 使用外部JS與調(diào)用原生API操作示例

    vue 使用外部JS與調(diào)用原生API操作示例

    這篇文章主要介紹了vue 使用外部JS與調(diào)用原生API操作,結(jié)合實(shí)例形式分析了vue.js調(diào)用外部JS與原生API相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下
    2019-12-12

最新評(píng)論

广平县| 朔州市| 客服| 沙雅县| 嵩明县| 龙游县| 红河县| 贺州市| 彰化市| 丹东市| 博野县| 绥芬河市| 象山县| 南丰县| 抚州市| 大宁县| 灵石县| 芦山县| 桃园市| 蒲城县| 张家港市| 屏东市| 远安县| 五华县| 修文县| 松潘县| 宁陕县| 临江市| 兴山县| 望奎县| 石棉县| 阜阳市| 宣武区| 阜宁县| 府谷县| 全州县| 北辰区| 中江县| 福安市| 清水县| 花垣县|