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

vue3+Naive?UI數(shù)據(jù)表格基本使用方式詳解

 更新時間:2023年08月14日 11:06:57   作者:CtsRain  
這篇文章主要給大家介紹了關(guān)于vue3+Naive?UI數(shù)據(jù)表格基本使用方式詳?shù)南嚓P(guān)資料,Naive?UI是一個基于Typescript開發(fā)的針對Vue3開發(fā)的UI組件庫,由TuSimple(圖森未來)公司開發(fā)并開源,需要的朋友可以參考下

一、基礎(chǔ)使用方式

1.引入表格及數(shù)據(jù)

<-- 表格標(biāo)簽 -->
<n-data-table :bordered="false" :single-line="false" 
:columns="tableHead" :data="tabeldata"/>
//表頭數(shù)據(jù) 一個對象表示一列 titel是每一列的名字 key是對應(yīng)的字段名 可在對象類寫每一列的寬度居中方式等樣式
const tableHead = ref([
  {
    title: '姓名',
    key: 'name',
    width: 300,
    align: 'center',
  },
  {
    title: '年齡',
    key: 'age'
  },
  {
    title: '地址',
    key: 'address'
  },
   {
    title: '標(biāo)簽',
    key: 'tags',
    render(row) {
      const tags = row.tags.map((tagKey) => {
        return h(
          NTag,
          {
            style: {
              marginRight: '6px'
            },
            type: 'info',
            bordered: false
          },
          {
            default: () => tagKey
          }
        )
      })
      return tags
    }
  },
  {
    title: '狀態(tài)',
    key: 'status'
  },
  {
    title: '操作',
    key: 'actions',
    //添加按鈕時必須有模板組件,將按鈕信息以參數(shù)形式傳到組件中,在組件中寫相關(guān)樣式 或 使用naive ui提供的組件
    render(record) {
      return [
        h(NButton, { //NButton是naive ui提供的按鈕組件模板,需要引入 import { NTag, NButton, } from 'naive-ui'
          text: true,
          style: { marginRight: '10px' },
          onClick: () => viewdetail(record)
        },
          { default: () => '詳情' }
        ),
        h(NButton, {
          text: true,
          onClick: () => deletedata(record)
        },
          { default: () => '刪除' }
        )
      ]
    }
  }
])
//表格數(shù)據(jù)
const tabeldata = ref([
  {
    key: 0,
    name: 'John Brown',
    age: 32,
    address: 'New York No. 1 Lake Park',
    status: '0',
    tags: ['nice', 'developer']
  },
  {
    key: 1,
    name: 'Jim Green',
    age: 42,
    address: 'London No. 1 Lake Park',
    status: '1',
    tags: ['wow']
  },
  {
    key: 2,
    name: 'Joe Black',
    age: 32,
    address: 'Sidney No. 1 Lake Park',
    status: '0',
    tags: ['cool', 'teacher']
  }
])

 這樣一個基礎(chǔ)表格就渲染出來了

二、修改操作按鈕等標(biāo)簽樣式

項目中可能會修改操作按鈕、標(biāo)簽等元素樣式修改,以按鈕為例,提供以下方式(需要注意的是,在naive ui數(shù)據(jù)表格中使用按鈕、標(biāo)簽等元素必須提供HTML元素模板,否則渲染出錯,所謂模板其實就是一個組件)

1.naive ui提供的模板

{
    title: '操作',
    key: 'actions',
    //使用naive ui提供的按鈕模板,需要引入按鈕模板 import { NButton } from 'naive-ui'
    render(record) {
      return [
        h(NButton, {//可在里面寫按鈕樣式
          text: true,
          style: { marginRight: '10px' },
          onClick: () => viewdetail(record)//點擊按鈕后的回調(diào)
        },
          { default: () => '詳情' }//按鈕顯示名稱
        ),
        h(NButton, {
          info: true,
          onClick: () => deletedata(record)
        },
          { default: () => '刪除' }
        )
      ]
    }
  }

這樣就可以渲染出按鈕

2.自定義按鈕模板 

項目中使用naive提供的模板可能滿足不了需求,這時可以使用自定義模板(組件)

①定義一個組件文件

<template>
    <div>
        <template v-for="(action, index) in getActions" :key="index">
            <n-button v-bind="action" style="margin-right: 10px;" text>
                {{ action.label }}
            </n-button>
        </template>
    </div>
</template>
<script lang="ts">
import { defineComponent, PropType, computed, toRaw, onMounted } from 'vue';
export default defineComponent({
    props: {
        actions: {
            type: Object,
            default: null,
            required: true,
        },
    },
    setup(props) {
        onMounted(() => {
            // console.log(props);
        })
        const getActions = computed(() => {
            return props.actions
        });
        return {
            getActions,
        };
    },
});
</script>

②頁面中引入該組件并使用

import ActionTemplate from '@/components/ActionTemplate.vue'
{
    title: '操作',
    key: 'actions',
    render(record) {
      return h(ActionTemplate,//使用按鈕組件
        {
          actions: [//通過props傳參將actions傳給按鈕組件(對應(yīng)樣式也可傳遞過去)
            {
              label: '刪除',
              onClick: deletedata.bind(null, record),
            },
            {
              label: '詳情',
              onClick: viewdetail.bind(null, record),
            },
          ],
        }
      )
    }
  }

這樣就可以渲染出按鈕

三、根據(jù)數(shù)據(jù)顯示不同內(nèi)容

項目中可能會根據(jù)后臺返回的數(shù)據(jù)在表格中顯示不同內(nèi)容,可以通過以下方式實現(xiàn)

{
    title: '狀態(tài)',
    key: 'status',
    className: 'stustatus',
    render(record) {
      let text = ''
      if (record.status == '0') {
        text = '在讀'
      } else if (record.status == '1') {
        text = '畢業(yè)'
      }
      return h('span', text)//這種渲染方式與渲染按鈕操作一樣必須提供元素模板,但是這里直接這樣寫'span'就可以,而渲染操作按鈕的時候?qū)?n-button'卻會報錯,我也搞不懂,有了解的伙伴可以解釋一下
    }
  },

最后就可以根據(jù)數(shù)據(jù)渲染不同內(nèi)容了

四、不同內(nèi)容顯示不同樣式

項目中表格不同內(nèi)容會顯示不同的樣式,提供以下方式實現(xiàn)

①在表格標(biāo)簽中加上返回樣式的屬性 :row-class-name="rowClassName"

<n-data-table :bordered="false" :single-line="false" :columns="tableHead" :data="tabeldata"
    :row-class-name="rowClassName" />

 ②定義返回類名的函數(shù)

const rowClassName = (row) => {
  if (row.status == '0') {
    return 'statusin'
  }
  return 'statusout'
}

 ③在style中寫不同類名對應(yīng)的樣式

:deep(.statusin .stustatus) {
  color: rgba(63, 210, 19, 0.75) !important;
}
:deep(.statusout .stustatus) {
  color: rgba(251, 8, 61, 0.75) !important;
}

④在對應(yīng)列的表頭對象里面加入類名屬性 className: 'stustatus'

{
    title: '狀態(tài)',
    key: 'status',
    className: 'stustatus',
    render(record) {
      let text = ''
      if (record.status == '0') {
        text = '在讀'
      } else if (record.status == '1') {
        text = '畢業(yè)'
      }
      return h('span', text)
    }
  },

最后表格就渲染出來了

 我也是在最近的項目迭代中開始使用的vue3+naive ui,開發(fā)過程中也遇到很多問題,網(wǎng)上與naive ui相關(guān)的文章太少了,也只能看文檔慢慢研究,后面也會不斷地更新與naive ui相關(guān)的文章,總之多看看文檔吧。

總結(jié)

到此這篇關(guān)于vue3+Naive UI數(shù)據(jù)表格基本使用方式的文章就介紹到這了,更多相關(guān)vue3 Naive UI數(shù)據(jù)表格使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue項目中禁用ESLint的幾種常見方法小結(jié)

    Vue項目中禁用ESLint的幾種常見方法小結(jié)

    Vue ESLint是一個基于ESLint的插件,它專門為Vue.js應(yīng)用設(shè)計,用于提供JavaScript代碼風(fēng)格檢查和最佳實踐規(guī)則,Vue項目通常會集成ESLint,目的是為了提升代碼質(zhì)量、保持一致性和可維護性,本文介紹了Vue項目中禁用ESLint的幾種常見方法,需要的朋友可以參考下
    2024-07-07
  • form?表單驗證是異步問題記錄(推薦)

    form?表單驗證是異步問題記錄(推薦)

    這篇文章主要介紹了form?表單驗證是異步問題記錄,通過實例代碼介紹了Promise.all 和 Promise.allSettled 區(qū)別,需要的朋友可以參考下
    2023-01-01
  • vue使用高德地圖實現(xiàn)實時定位天氣預(yù)報功能

    vue使用高德地圖實現(xiàn)實時定位天氣預(yù)報功能

    這篇文章主要介紹了vue使用高德地圖實現(xiàn)實時天氣預(yù)報功能,根據(jù)定位功能,使用高德地圖實現(xiàn)定位當(dāng)前城市的天氣預(yù)報功能,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 詳解vue服務(wù)端渲染(SSR)初探

    詳解vue服務(wù)端渲染(SSR)初探

    本篇文章主要介紹了詳解vue服務(wù)端渲染(SSR)初探,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue+webpack模擬后臺數(shù)據(jù)的示例代碼

    vue+webpack模擬后臺數(shù)據(jù)的示例代碼

    這篇文章主要介紹了vue+webpack模擬后臺數(shù)據(jù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Vue3封裝組件完整實例(帶回調(diào)事件)

    Vue3封裝組件完整實例(帶回調(diào)事件)

    Vue.js已成為現(xiàn)代Web開發(fā)中不可或缺的技術(shù)之一,雖然Vue.js的一些基礎(chǔ)概念和語法比較易學(xué),但深入挖掘Vue.js的核心概念和功能需要更多的實踐,下面這篇文章主要給大家介紹了關(guān)于Vue3封裝組件(帶回調(diào)事件)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 詳解如何在Vue2中實現(xiàn)組件props雙向綁定

    詳解如何在Vue2中實現(xiàn)組件props雙向綁定

    在Vue2中組件的props的數(shù)據(jù)流動改為了只能單向流動,如何在Vue2中實現(xiàn)組件props雙向綁定 ,一起來跟小編看看。
    2017-03-03
  • Vue實現(xiàn)一個返回頂部backToTop組件

    Vue實現(xiàn)一個返回頂部backToTop組件

    本篇文章主要介紹了Vue實現(xiàn)一個返回頂部backToTop組件,可以實現(xiàn)回到頂部效果,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • vue實現(xiàn)自定義公共組件及提取公共的方法

    vue實現(xiàn)自定義公共組件及提取公共的方法

    這篇文章主要介紹了vue實現(xiàn)自定義公共組件及提取公共的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 基于Vue3+element-plus實現(xiàn)中英文切換功能

    基于Vue3+element-plus實現(xiàn)中英文切換功能

    在?Vue?3?項目中結(jié)合?vue-i18n?和?Element?Plus?實現(xiàn)中英文切換是一個常見的需求,下面是一個詳細(xì)的步驟指南,幫助你完成這個任務(wù),需要的朋友可以參考下
    2024-11-11

最新評論

南郑县| 榕江县| 竹溪县| 武鸣县| 本溪| 穆棱市| 沙河市| 聂拉木县| 无极县| 都匀市| 沿河| 徐汇区| 双峰县| 景洪市| 新乐市| 万宁市| 和平县| 施秉县| 镇坪县| 哈巴河县| 江津市| 雷州市| 富源县| 泾川县| 宜宾县| 龙川县| 昔阳县| 尚义县| 洪湖市| 漠河县| 鲁甸县| 滨州市| 吴桥县| 乡城县| 翁牛特旗| 惠水县| 土默特左旗| 保康县| 沅江市| 迁西县| 遂昌县|