国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端-vue+elment-ui之表格自定義列模版

這篇具有很好參考價值的文章主要介紹了前端-vue+elment-ui之表格自定義列模版。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

表格自定義列模版



前言

日前vue3項目中用elment-ui表格封裝一個組件,有自定義表列格式的需求,做完后順手總結一下


一、為什么要自定義表列模版?

后端返回的數(shù)據(jù)往往比較原始,比如狀態(tài)是數(shù)值,而我們要給它轉成中文并用不同顏色標記,這種場景很常見

二、實現(xiàn)步驟

1.封裝表格組件

代碼如下(示例):

通過插槽v-slots實現(xiàn)

// data-table/index.tsx

import { ElPagination, ElTable, ElTableColumn } from "element-plus";
import { PropType, defineComponent } from "vue";

const props = {
    tableStyle: {
        type: String as PropType<string>,
        default: 'height: 150px;overflow-y: auto'
    },
    showHeader: {
        type: Boolean as PropType<boolean>,
        default: true
    },
    tableData: {
        type: Array
    },
    columns: {
        type: [Array, Object]
    },
    pagination: {
        type: Object,
        default: () => ({
            total: 0,
            page: 1,
            limit: 20,
            background: true,
            pageSizes: [10, 20, 30, 50],
            pagerCount: document.body.clientWidth < 992 ? 5 : 7,
            layout: '->, total, sizes, prev, pager, next, jumper',
        })
    }
}

export default defineComponent({
    name: 'data-table',
    props,
    setup(props) {
        const defaultBackground = true
        const defaultPageSizes = [10, 20, 30, 50]
        const defaultPagerCount = document.body.clientWidth < 992 ? 5 : 7
        const defaultLayout = '->, total, sizes, prev, pager, next, jumper'
        
        return () => (
            <>
                <div style={ props.tableStyle }>
                    <ElTable v-show={ props.tableData?.length>0 } showHeader={ props.showHeader } v-model:data={ props.tableData } style={{width: '100%'}}>
                        {props.columns?.map((item) => (
                            <ElTableColumn 
                                key={ item.key? item.key:item }
                                prop={ item.prop? item.prop:item }
                                label={ item.label? item.label:item }
                                sortable={ item.sortable }
                                v-slots={{
                                    default: (scope) => item.render? item.render(scope.row):undefined
                                }}
                                />
                        ))}
                    </ElTable>
                    <ElPagination 
                        v-show={ props.pagination.total>0 }
                        small 
                        total={ props.pagination.total }
                        background={ props.pagination.background || defaultBackground }
                        pageSizes={ props.pagination.pageSizes || defaultPageSizes }
                        pagerCount={ props.pagination.pagerCount || defaultPagerCount}
                        layout={ props.pagination.layout || defaultLayout }/>
                </div>
            </>
        )
    }
})

2.父組件引用

代碼如下(示例):

在columns中提供render

// parentComponent

export default defineComponent({
    name: 'parent',
    setup() {
        const columns = [
            {key: 'type', prop: 'type', label: 'type', render: (row) => <ElTag>{ row.type }</ElTag>}, 
            {key: 'parseTrue', prop: 'parseTrue', label: 'parseTrue', render: (row) => {
                return row.parseTrue? <ElTag type='success'>語法正確</ElTag> : <ElTag type='danger'>語法錯誤</ElTag>
            }}, 
            {key: 'explainTrue',prop: 'explainTrue', label: 'explainTrue', render: (row) => {
                return row.explainTrue? <ElTag type='success'>邏輯正確</ElTag> : <ElTag type='danger'>邏輯錯誤</ElTag>
            }}, 
            {key: 'explainTime', prop: 'explainTime', label: 'explainTime'}, 
            {key: 'sql', prop: 'sql', label: 'sql'}
        ]
        const tableData = ref([])
        const total = ref(0)

        return () => (
            <>
                <DataTable
                    tableStyle='height: 500px;overflow-y: auto'
                    showHeader={ false }
                    columns={ columns }
                    tableData={ tableData.value }
                    pagination={{
                        total: total.value
                    }}
                />
            </>
        )
    }
})

兩步就好,不多不少。


總結

通過插槽完美解決了element-ui表格自定義列模版的問題,可能還會有更復雜的場景,待遇到時再具體分析。文章來源地址http://www.zghlxwxcb.cn/news/detail-739837.html

到了這里,關于前端-vue+elment-ui之表格自定義列模版的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • elment-ui部分ui組件在移動端也能實現(xiàn)自適應

    javascript 好久沒更新了 ,來更新一下自己的筆記 最近有移動端的項目遷移到pc端,pc端那一套用的是element-ui的后臺框架,所以難免有一些樣式不兼容的問題,之前很久的時候也處理過這些,但是很久沒處理忘了==, 所以之后再遇到兼容的會更新到這篇筆記上,供之后翻閱 1. el-dialog 借助

    2024年02月04日
    瀏覽(20)
  • elment-ui el-tabs組件 每次點擊后 created方法都會執(zhí)行2次

    elment-ui el-tabs組件 每次點擊后 created方法都會執(zhí)行2次

    先看錯誤的 日志打印:? 錯誤的代碼如下: 正確的日志打印:? 正確的代碼如下: ?前言: ? ? 在element-ui的tabs組件中,我們發(fā)現(xiàn)每次切換頁面,所有的子組件都會重新渲染一次。當子頁面需要發(fā)送數(shù)據(jù)請求并且子頁面過多時,這樣會過多的占用網絡資源。這里我們可以使用 v-if

    2024年04月28日
    瀏覽(25)
  • 前端Vue自定義驗證碼密碼登錄切換tabs選項卡標簽欄標題欄 驗證碼登錄模版 密碼登錄模版

    前端Vue自定義驗證碼密碼登錄切換tabs選項卡標簽欄標題欄 驗證碼登錄模版 密碼登錄模版

    前端Vue自定義驗證碼密碼登錄切換tabs選項卡標簽欄標題欄 驗證碼登錄模版 密碼登錄模版, 請訪問uni-app插件市場地址:https://ext.dcloud.net.cn/plugin?id=13221 效果圖如下: 實現(xiàn)代碼如下: 使用方法 HTML代碼實現(xiàn)部分 組件實現(xiàn)代碼

    2024年02月11日
    瀏覽(27)
  • 【分頁表格】Vue2 + Element UI實現(xiàn)自定義的分頁表格組件(自定義Vue組件)

    這篇文章,主要介紹Vue2 + Element UI實現(xiàn)自定義的分頁表格組件(自定義Vue組件)。 目錄 一、分頁表格 1.1、運行效果 1.2、運行環(huán)境 1.3、案例代碼

    2024年02月11日
    瀏覽(52)
  • 前端vue自定義table 表格 表格組件 Excel組件

    前端vue自定義table 表格 表格組件 Excel組件

    前端組件化開發(fā)與Excel組件設計 一、前端開發(fā)的復雜性與組件化的必要性 隨著技術的發(fā)展,前端開發(fā)的復雜度越來越高,傳統(tǒng)開發(fā)方式將一個系統(tǒng)做成了整塊應用,經常出現(xiàn)的情況就是一個小小的改動或者一個小功能的增加可能會引起整體邏輯的修改,造成牽一發(fā)而動全身。

    2024年02月09日
    瀏覽(33)
  • 前端Vue自定義簡單通用省市區(qū)選擇器picker地區(qū)選擇器picker 收獲地址界面模版

    前端Vue自定義簡單通用省市區(qū)選擇器picker地區(qū)選擇器picker 收獲地址界面模版

    隨著技術的發(fā)展,開發(fā)的復雜度也越來越高,傳統(tǒng)開發(fā)方式將一個系統(tǒng)做成了整塊應用,經常出現(xiàn)的情況就是一個小小的改動或者一個小功能的增加可能會引起整體邏輯的修改,造成牽一發(fā)而動全身。通過組件化開發(fā),可以有效實現(xiàn)單獨開發(fā),單獨維護,而且他們之間可以隨

    2024年02月10日
    瀏覽(24)
  • vue搭配element-ui前端實現(xiàn)表格分頁

    如果不從后臺請求數(shù)據(jù),那么就需要在前端手動管理數(shù)據(jù)??梢允褂靡韵虏襟E實現(xiàn)該功能: 在 Vue 組件的 data 中定義一個數(shù)組來存放所有數(shù)據(jù)(不分頁)。 在 mounted 鉤子函數(shù)中,手動獲取數(shù)據(jù)并存放到上一步定義的數(shù)組中。 在模板中使用 element-ui 的表格組件來展示數(shù)據(jù),同

    2024年02月11日
    瀏覽(31)
  • vue+element ui 表格添加多個搜索條件篩選(前端查詢)

    filterList 為篩選后的數(shù)據(jù),可以重新給tableData賦值,賦值后如果遇到表格數(shù)據(jù)不刷新的情況,可以給table加上一個隨機的key。這樣可以解決重新賦值頁面不刷新的情況。

    2024年02月16日
    瀏覽(21)
  • 在Vue+element UI項目中 自定義表格索引實現(xiàn)序號倒序排列

    在Vue+element UI項目中 自定義表格索引實現(xiàn)序號倒序排列

    實現(xiàn)效果:不分頁 分頁: 第一頁 分頁: 第二頁 ? ? element-ui文檔說明 element-ui的官方文檔是默認升序: ?如果設置了tyle=index可以傳遞index屬性自定義索引

    2024年02月11日
    瀏覽(29)
  • vue3前端excel導出;組件表格,自定義表格導出;Vue3 + xlsx + xlsx-style

    vue3前端excel導出;組件表格,自定義表格導出;Vue3 + xlsx + xlsx-style

    當畫面有自定義的表格或者樣式過于復雜的表格時,導出功能可以由前端實現(xiàn) 1. 使用的插件 : sheet.js-xlsx 文檔地址:https://docs.sheetjs.com/ 中文地址:https://geekdaxue.co/read/SheetJS-docs-zh/README.md xlsx-style:https://www.npmjs.com/package/xlsx-style 2. 安裝引用 安裝插件-vue3 引用插件 3. 組件表格

    2024年04月26日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包