当前位置:首页 > VUE

antd vue实现

2026-01-14 00:06:36VUE

以下是基于 Ant Design Vue(antd-vue)实现常见功能的整理方案,涵盖基础用法和关键配置:

安装与引入

通过 npm 或 yarn 安装依赖包:

npm install ant-design-vue@next
# 或
yarn add ant-design-vue@next

全局引入样式和组件(在 main.js 中):

import { createApp } from 'vue'
import Antd from 'ant-design-vue'
import 'ant-design-vue/dist/antd.css'

const app = createApp(App)
app.use(Antd)

表单控件示例

实现带验证的表单:

<template>
  <a-form :model="formState" @finish="onSubmit">
    <a-form-item label="用户名" name="username" :rules="[{ required: true }]">
      <a-input v-model:value="formState.username" />
    </a-form-item>
    <a-form-item label="密码" name="password" :rules="[{ min: 6 }]">
      <a-input-password v-model:value="formState.password" />
    </a-form-item>
    <a-button type="primary" html-type="submit">提交</a-button>
  </a-form>
</template>

<script setup>
const formState = reactive({
  username: '',
  password: ''
})
const onSubmit = () => {
  console.log('Submitted values:', formState)
}
</script>

表格与分页

数据表格带分页功能:

<template>
  <a-table
    :columns="columns"
    :data-source="data"
    :pagination="pagination"
    @change="handleTableChange"
  />
</template>

<script setup>
const columns = [
  { title: '姓名', dataIndex: 'name' },
  { title: '年龄', dataIndex: 'age' }
]
const data = ref([])
const pagination = reactive({
  current: 1,
  pageSize: 10,
  total: 0
})

const fetchData = (params = {}) => {
  // 模拟API请求
  const mockData = Array(30).fill().map((_, i) => ({
    key: i,
    name: `用户 ${i}`,
    age: 20 + (i % 10)
  }))

  data.value = mockData.slice(
    (params.current - 1) * params.pageSize,
    params.current * params.pageSize
  )
  pagination.total = 30
}

const handleTableChange = (pag) => {
  pagination.current = pag.current
  fetchData({ ...pagination })
}

onMounted(() => fetchData(pagination))
</script>

主题定制

修改默认主题色(在 vite.config.js 中):

import { defineConfig } from 'vite'
import vitePluginImp from 'vite-plugin-imp'

export default defineConfig({
  plugins: [
    vitePluginImp({
      libList: [
        {
          libName: 'ant-design-vue',
          style: name => `ant-design-vue/es/${name}/style/css`
        }
      ]
    })
  ],
  css: {
    preprocessorOptions: {
      less: {
        modifyVars: {
          'primary-color': '#1DA57A',
          'border-radius-base': '4px'
        },
        javascriptEnabled: true
      }
    }
  }
})

注意事项

  • 按需引入需配合 unplugin-vue-components 插件
  • 表单验证规则支持异步验证函数
  • 表格组件需设置 rowKey 属性用于 Vue 的 diff 算法优化
  • 主题变量覆盖需参考官方提供的 default.less 变量列表

antd vue实现

标签: antdvue
分享给朋友:

相关文章

vue实现年历

vue实现年历

Vue 实现年历的方法 使用 Vue 实现年历可以通过组件化开发方式,结合日期计算和动态渲染完成。以下是两种常见的实现方式: 基于原生 Vue 的日历组件 创建 Calendar.vue 组件文件,…

vue前端实现注册

vue前端实现注册

使用 Vue 实现用户注册功能 环境准备 确保已安装 Vue CLI 或通过 CDN 引入 Vue。若使用 Vue CLI,需安装 axios 或其他 HTTP 库用于后端通信。 注册表单组件 创建…

vue实现录播播放

vue实现录播播放

Vue 实现录播播放 使用 video.js 实现 安装 video.js 和相关的 Vue 适配器: npm install video.js @videojs-player/vue 在 Vue…

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.defineProp…

vue实现简单的弹窗

vue实现简单的弹窗

使用 Vue 实现简单弹窗 组件基础结构 创建一个名为 Modal.vue 的组件文件,包含模板、脚本和样式部分: <template> <div class="modal-…

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直接使…