【技術實戰】Vue技術實戰【二】

来源:https://www.cnblogs.com/yyyyfly1/archive/2023/07/25/17578708.html
-Advertisement-
Play Games

博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...


需求實戰一

效果展示

代碼展示

<template>
    <div>

            <a-table :dataSource="dataSource" :columns="columns" />

    </div>
</template>


<script setup lang="ts">


const dataSource= ref([
    {
        key: '1',
        name: '胡彥斌',
        age: 32,
        address: '西湖區湖底公園1號',
    },
    {
        key: '2',
        name: '胡彥祖',
        age: 42,
        address: '西湖區湖底公園1號',
    },
])

const columns=ref([
    {
        title: '姓名',
        dataIndex: 'name',
        key: 'name',
    },
    {
        title: '年齡',
        dataIndex: 'age',
        key: 'age',
    },
    {
        title: '住址',
        dataIndex: 'address',
        key: 'address',
    },
])
</script>

代碼解讀

這段代碼是一個使用Vue 3的組件,用於展示一個表格。代碼中使用了Vue的模板語法,通過<template>標簽定義了組件的模板部分。在模板中,使用了<a-table>標簽來展示表格,通過:dataSource和:columns屬性綁定了數據源和列的配置。   在<script setup>標簽中,使用了Vue 3的新特性<script setup>,它可以簡化組件的寫法。在這裡,定義了兩個響應式變數dataSource和columns,它們分別存儲了表格的數據源和列的配置。ref函數用於將普通變數轉換為響應式變數。   dataSource是一個數組,存儲了表格的數據。每個數據對象都有key、name、age和address屬性,分別表示數據的唯一標識、姓名、年齡和住址。   columns也是一個數組,存儲了表格的列的配置。每個列配置對象都有title、dataIndex和key屬性,分別表示列的標題、數據索引和唯一標識。   這段代碼的作用是展示一個簡單的表格,表格的數據和列的配置都是通過響應式變數來管理的,可以方便地進行數據的更新和操作。

需求實戰二

效果展示

代碼展示

<template>

    <div>
        <a-button type="primary" @click="addRow">新增</a-button>
<br>
<br>
<br>
        <a-table :dataSource="dataSource" :columns="columns" bordered>

            <template #operation="{ record }">
                <a-button type="primary" @click="editRow(record)">編輯</a-button>
                &nbsp
                &nbsp
                &nbsp
                <a-button type="danger" @click="deleteRow(record)">刪除</a-button>
            </template>
            <template #title>
                <div style="text-align: center;">個人信息表格</div>
            </template>
        </a-table>
    </div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const dataSource = ref([
    {
        key: '1',
        name: '張三',
        age: '32',
        address: '天安門廣場',
    },
    {
        key: '2',
        name: '李四',
        age: '42',
        address: '紫禁城',
    },
])
const columns = ref([
    {
        title: '姓名',
        dataIndex: 'name',
        key: 'name',
    },
    {
        title: '年齡',
        dataIndex: 'age',
        key: 'age',
    },
    {
        title: '住址',
        dataIndex: 'address',
        key: 'address',
    },
    {
        title: '操作',
        dataIndex: 'operation',
        slots: { customRender: 'operation' },
    },
])
const editRow = (record: any) => {
    const index = dataSource.value.findIndex((item: any) => item.key === record.key);
    if (index !== -1) {
        const newName = prompt('Enter new name:');
        const newAge = prompt('Enter new age:');
        const newAddress = prompt('Enter new address:');
        if (newName && newAge && newAddress) {
            dataSource.value[index].name = newName;
            dataSource.value[index].age = newAge;
            dataSource.value[index].address = newAddress;
        }
    }
}
const deleteRow = (record: any) => {
    const index = dataSource.value.findIndex((item) => item.key === record.key)
    if (index !== -1) {
        dataSource.value.splice(index, 1)
    }
}
const addRow = () => {
    const newName = prompt('Enter name:');
    const newAge = prompt('Enter age:');
    const newAddress = prompt('Enter address:');
    if (newName && newAge && newAddress) {
        const newKey = String(dataSource.value.length + 1);
        dataSource.value.push({
            key: newKey,
            name: newName,
            age: newAge,
            address: newAddress,
        });
    }
}
</script>

代碼解讀

這段代碼是一個基於Vue框架的前端頁面,用於展示一個個人信息表格,並提供了新增、編輯和刪除功能。   在模板部分,使用了Ant Design Vue組件庫中的<a-table>和<a-button>組件來構建頁面。<a-table>組件用於展示表格數據,通過:dataSource和:columns屬性綁定數據源和列配置。在<a-table>組件內部,使用了兩個<template>標簽來自定義表格的標題和操作列。   在腳本部分,使用了Vue 3中的<script setup>語法,引入了ref函數來創建響應式數據。dataSource和columns分別是表格的數據源和列配置,通過ref函數將其轉換為響應式數據。editRow、deleteRow和addRow是處理編輯、刪除和新增操作的函數。   editRow函數用於編輯表格行數據,首先根據傳入的record參數找到對應的數據索引,然後通過prompt函數彈出輸入框,獲取新的姓名、年齡和地址。如果輸入框有值,則更新對應數據的屬性值。   deleteRow函數用於刪除表格行數據,同樣根據傳入的record參數找到對應的數據索引,然後使用splice方法從數據源中刪除該數據。   addRow函數用於新增表格行數據,同樣使用prompt函數彈出輸入框,獲取新的姓名、年齡和地址。如果輸入框有值,則生成一個新的key值,並將新數據添加到數據源中。   整體來說,這段代碼實現了一個簡單的個人信息表格,並提供了編輯、刪除和新增功能。

需求實戰三

效果展示

代碼展示

<template>
<ARow>
    <a-button type="primary" @click="handleAdd" >新增</a-button>
</ARow>
    <br>
    <br>
    <br>
    <ARow>
    <a-table :columns="columns" :data-source="dataSource" bordered>
        <template v-for="col in ['name', 'age', 'address']" #[col]="{ text, record }" :key="col">
            <div>
                <a-input
                    v-if="editableData[record.key]"
                    v-model:value="editableData[record.key][col]"
                    style="margin: -5px 0"
                />
                <template v-else>
                    {{ text }}
                </template>
            </div>
        </template>
        <template #operation="{ record }">
            <div class="editable-row-operations">
        <span v-if="editableData[record.key]">
            <div style="display: flex; justify-content: space-between;">

          <a-button type="primary" @click="save(record.key)">保存</a-button>
    &nbsp&nbsp&nbsp

          <a-button type="danger"  @click="cancel(record.key)">
            取消
          </a-button>
                </div>

        </span>
        <span v-else>
<div style="display: flex; justify-content: space-between;">
  <a-button type="primary" @click="edit(record.key)">編輯</a-button>
    &nbsp&nbsp&nbsp
  <a-button type="danger" @click="onDelete(record.key)">刪除</a-button>
</div>
        </span>
            </div>
        </template>
    </a-table>
    </ARow>
</template>
<script setup lang="ts">
import { cloneDeep } from 'lodash-es';
import {  reactive,  UnwrapRef } from 'vue';

const columns = [
    {
        title: 'name',
        dataIndex: 'name',

        slots: { customRender: 'name' },
    },
    {
        title: 'age',
        dataIndex: 'age',

        slots: { customRender: 'age' },
    },
    {
        title: 'address',
        dataIndex: 'address',

        slots: { customRender: 'address' },
    },
    {
        title: 'operation',
        dataIndex: 'operation',
        slots: { customRender: 'operation' },
    },
];
interface DataItem {
    key: string;
    name: string;
    age: number;
    address: string;
}
const data: DataItem[] = [];
for (let i = 0; i < 100; i++) {
    data.push({
        key: i.toString(),
        name: `Edrward ${i}`,
        age: 32,
        address: `London Park no. ${i}`,
    });
}

const handleAdd = () => {
    const newData = {
        key: `${count.value}`,
        name: `Edward King ${count.value}`,
        age: 32,
        address: `London, Park Lane no. ${count.value}`,
    };
    dataSource.value.push(newData);
};
        const count = computed(() => dataSource.value.length + 1);


        const dataSource = ref(data);
        const editableData: UnwrapRef<Record<string, DataItem>> = reactive({});

        const edit = (key: string) => {
            editableData[key] = cloneDeep(dataSource.value.filter(item => key === item.key)[0]);
        };
        const save = (key: string) => {
            Object.assign(dataSource.value.filter(item => key === item.key)[0], editableData[key]);
            delete editableData[key];
        };
        const cancel = (key: string) => {
            delete editableData[key];
        };

        const onDelete = (key: string) => {
            dataSource.value = dataSource.value.filter(item => item.key !== key);
        };
</script>

代碼解讀

這段代碼是一個包含表格和編輯功能的Vue組件。主要功能是展示一個包含姓名、年齡、地址等信息的表格,並提供編輯、保存、取消和刪除功能。   在模板部分,使用了Ant Design Vue組件庫的<a-table>和<a-button>組件來實現表格和按鈕的展示。表格的列定義在columns數組中,每一列都有一個對應的dataIndex屬性指定數據源中的欄位名,以及一個slots屬性指定自定義渲染的插槽名。   在數據部分,定義了一個DataItem介面表示表格中的每一行數據,以及一個data數組用於存儲所有的數據。通過迴圈生成了100條測試數據,並將其賦值給dataSource變數。   在腳本部分,使用了Vue 3的<script setup>語法來定義組件的邏輯部分。首先引入了lodash-es庫中的cloneDeep函數和Vue的reactive和ref函數。然後定義了一些響應式的變數,包括dataSource用於存儲表格數據,editableData用於存儲正在編輯的數據,以及count用於生成新數據的鍵值。   接下來定義了一些處理函數,包括handleAdd用於新增數據,edit用於編輯數據,save用於保存編輯後的數據,cancel用於取消編輯,以及onDelete用於刪除數據。這些函數通過操作dataSource和editableData來實現相應的功能。   最後,將定義的變數和函數導出供模板部分使用。 在黑夜裡夢想著光,心中覆蓋悲傷,在悲傷里忍受孤獨,空守一絲溫暖。 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在。 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、Mysql體繫結構 1.1、連接層 最上層是一個客戶端和鏈接服務,主要完成一些類似於鏈接處理,授權認證,及相關的安全方案,伺服器也會為安全接入的而每個客戶端驗證它所具有的操作許可權 1.2、服務層 第二層架構主要完成大多數的核心服務功能,如SQL介面,並完成緩存的查詢,SQL的分析和優化,部分內置 ...
  • 在 Percona MySQL 支持團隊中,我們經常看到客戶抱怨複製延遲的問題。當然,這對 MySQL 用戶來說並不是什麼新鮮事,多年來我們在 MySQL 性能博客上發表過一些關於這個主題的文章(過去有兩篇特別受歡迎的文章:"Reasons for MySQL Replication Lag" 和 ...
  • 在MySQL中,刪除表中數據的方式有多種。下麵是一些常用的方式以及它們的優劣勢: 1. 使用DELETE語句: ```sql DELETE FROM table_name; ``` 優勢:DELETE語句是最常見和簡單的刪除數據方式。它可以刪除表中的所有數據或者根據WHERE子句刪除指定條件的數據。 ...
  • ## 1.概述 **MySQL 8.0.22 開始**,支持非同步連接故障切換機制,在現有主從複製連接失敗後,自動建立到新主的非同步複製連接。 **MySQL 8.0.23 開始**,非同步連接故障切換機制還支持組複製拓撲,通過自動監視組成員身份的更改並區分主節點和從節點,在組複製主節點故障選出新主節點後 ...
  • > 你準備好面試了嗎?這裡有一些面試中可能會問到的問題以及相對應的答案。如果你需要更多的面試經驗和麵試題,關註一下"張飛的豬大數據分享"吧,公眾號會不定時的分享相關的知識和資料。 ## 1、MapReduce優化方法 1)數據輸入 (1)合併小文件:在執行mr任務前將小文件進行合併,大量的小文件會產 ...
  • 轉載請標明出處,維權必究:http://77blogs.com/?p=189 **一、在工程上新建一個Module。** **二、刪除其餘不必要的文件,最終目錄結構如下:** ![image](https://img2023.cnblogs.com/blog/1019373/202307/10193 ...
  • 啟動是App給用戶的第一印象,一款App的啟動速度,不單單是用戶體驗的事情,往往還決定了它能否獲取更多的用戶。所以到了一定階段App的啟動優化是必須要做的事情。 ...
  • 每當到618、雙11這樣大促的時候,搜索作為整個App的核心功能,不僅擔當著流量入口,還承載著用戶感知到這個產品在導購場景中的服務與體驗,所以保障搜索以便更好的助力618大賣。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...