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

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

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

正文

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

todoList demo

先來看一個簡單的例子:todoList demo。

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

目錄結(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 };

邏輯抽離

 

  • 新建一個hooks 文件夾,在hooks 文件夾中新建一個todoList.ts 文件,將TodoList.vue 中的data 數(shù)據(jù) 和onAdd 方法 抽離到hooks文件中,并導出:
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 中導入:

<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 方法,也可以導入hooks 文件使用,而且現(xiàn)在再來看TodoList.vue 文件看上去是不是非常清爽。 功能跟未抽離前是一樣的:

完整代碼

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

相關(guān)文章

  • Vue實現(xiàn)一個動態(tài)添加行的表格步驟詳解

    Vue實現(xiàn)一個動態(tài)添加行的表格步驟詳解

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

    VUE中的mapState和mapActions的使用詳解

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

    Vue全家桶入門基礎教程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

高密市| 手游| 大埔县| 甘德县| 松阳县| 永川市| 克东县| 宁化县| 房产| 汾阳市| 五莲县| 吉林市| 天台县| 沙田区| 上林县| 光泽县| 临城县| 营山县| 黄陵县| 四平市| 南汇区| 黔江区| 项城市| 博罗县| 年辖:市辖区| 平阴县| 长宁县| 永胜县| 克什克腾旗| 广州市| 信宜市| 鄂伦春自治旗| 隆安县| 抚州市| 秦皇岛市| 仙桃市| 福建省| 长沙市| 门源| 海口市| 同江市|