Element Plus基础组件及实际功能用法|编辑&删除

1. Table 表格

用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作。

基础的表格展示用法: 当 el-table 元素中注入 data 对象数组后,在 el-table-column 中用 prop 属性来对应对象中的键名即可填入数据,用 label 属性来定义表格的列名。

可以使用 width 属性来定义列宽。

<script setup>
import { ref } from 'vue'
const userList = ref ([])
  const userinfoList=[{
    id:1,
      name:'Rookie',
      age:27
    },{
      id:2,
      name:'shy',
      age:25
    },{
      id:3,
      name:'ning',
      age:26
    },{
      id:4,
      name:'jklove',
      age:24
    },{
      id:5,
      name:'lan',
      age:25
    }]
    userList.value = userinfoList
</script>

<template>
  <div>
    <el-table :data="userList" border>
      <el-table-column label="ID" prop="id"></el-table-column>
      <el-table-column label="name" prop="name"></el-table-column>
      <el-table-column label="age" prop="age"></el-table-column>
      <el-table-column label="操作" width="400">
      </el-table-column>
    </el-table>
  </div>
</template>

<style scoped>
</style>

 代码显示结果:

2. Button 按钮

使用 typeplainround 和 circle 来定义按钮的样式。

<script setup>

import {
  Delete,
  Edit,
} from '@element-plus/icons-vue'

..........

</script>

<template>
  <div>
     ...
<!---省略--->
     ...
   <template #default = "{row}"> <!--获得操作当前行对象-->
     <el-button type="primary" :icon="Edit" circle />
     <el-button type="danger" :icon="Delete" @click="deleteUser(row.id)" />
   </template>
     ...
<!---省略--->
     ...
  </div>
</template>

在<script>中:

从 @element-plus/icons-vue 包中导入了 Delete 和 Edit 两个图标组件。

这些图标通常用于 Element Plus UI 组件库的按钮或其他元素中,以提供视觉反馈。

template #default = "{row}":

#default:这是插槽的名称。在 Vue 3 中,default 是一个特殊的插槽名称,它表示默认插槽。当没有指定插槽名称时,可以使用 #default 来引用它。

="{row}":这是插槽的参数声明。花括号 {} 内声明了一个名为 row 的变量,它将被用作插槽的参数。这个参数通常是一个对象,包含了父组件传递给插槽的数据。

在这个具体的例子中,row 参数代表当前行的数据对象。因为这是在 el-table-column 组件内定义的,所以 row 会是 el-table 组件 :data 属性绑定的数组中的一个元素。对于每一行数据,row 都会更新为数组中对应的那个元素。

 代码显示结果:

以上效果完整代码:

<script setup>

import {
  Delete,
  Edit,
} from '@element-plus/icons-vue'

import { ref } from 'vue'
const userList = ref ([])
  const userinfoList=[{
    id:1,
      name:'Rookie',
      age:27
    },{
      id:2,
      name:'shy',
      age:25
    },{
      id:3,
      name:'ning',
      age:26
    },{
      id:4,
      name:'jklove',
      age:24
    },{
      id:5,
      name:'lan',
      age:25
    }]
    userList.value = userinfoList
</script>

<template>
  <div>
    <el-table :data="userList" border>
      <el-table-column label="ID" prop="id"></el-table-column>
      <el-table-column label="name" prop="name"></el-table-column>
      <el-table-column label="age" prop="age"></el-table-column>
      <el-table-column label="操作" width="400">
        <template #default = "{row}"> <!--获得操作当前行对象-->
          <el-button type="primary" :icon="Edit" circle />
          <el-button type="danger" :icon="Delete" @click="deleteUser(row.id)" />
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<style scoped>
</style>

3.删除指定条目信息

<script setup>

import { ref ,onMounted } from 'vue'
const userList = ref ([])
const getUserList =()=>{ // 获得用户信息
  const userinfoList=[{
        ...........
   <!---表格信息省略--->
        ...........
]
    userList.value = userinfoList
}
onMounted(()=>getUserList()) //调用用户信息并展示
//删除函数
const deleteUser = (userId)=>{
  console.log(userId)
  for(var i=0;i<userList.value.length;i++){  //循环获得数组中的每一个对象
    if(userList.value[i].id == userId){  //判断对象的id属性值 是否 与传入的id值 相等
      userList.value.splice(i,1) //删除集合中对象,参数1,删除元素的下标数,参数2,删除数据行数
      console.log(userList.value)
    }
  }
}  
}

</script>

<template>

        ...........
   <!---表格格式参数省略--->
        ...........

</template>

<style scoped>

</style>

1. 导入 Vue 功能:

从 vue 包中导入了 ref 和 onMounted 两个函数。

ref 用于创建响应式数据,onMounted 是一个生命周期钩子,用于在组件挂载后执行代码。

2. 定义响应式数据:

使用 ref 创建了一个名为 userList 的响应式数据,初始值为空数组 []。

3. 定义获取用户信息的函数:

定义了一个名为 getUserList 的函数,用于获取用户信息。

函数内部定义了一个 userinfoList 数组,包含了用户数据。这个数组包含了用户的具体信息。

将 userinfoList 数组赋值给 userList.value,使得 userList 变为包含用户信息的响应式数组。

4. 挂载生命周期钩子:

使用 onMounted 钩子调用 getUserList 函数,确保在组件挂载到 DOM 后立即获取用户信息。

5. 定义删除用户的函数:

定义了一个名为 deleteUser 的函数,接收一个参数 userId。

函数内部使用 console.log 打印传入的 userId。

使用 for 循环遍历 userList.value 数组,找到与 userId 相匹配的用户对象。

使用 splice 方法从数组中删除找到的用户对象,并打印更新后的数组。 

以上效果完整代码:

<script setup>

import {
  Delete,
  Edit,
} from '@element-plus/icons-vue'

import { ref ,onMounted } from 'vue'
const userList = ref ([])
const getUserList =()=>{ // 获得用户信息
  const userinfoList=[{
    id:1,
      name:'Rookie',
      age:20
    },{
      id:2,
      name:'shy',
      age:19
    },{
      id:3,
      name:'ning',
      age:21
    },{
      id:4,
      name:'jklove',
      age:17
    },{
      id:5,
      name:'lan',
      age:18
    }]
    userList.value = userinfoList
}
onMounted(()=>getUserList()) //调用用户信息并展示
//删除函数
const deleteUser = (userId)=>{
  console.log(userId)
  for(var i=0;i<userList.value.length;i++){  //循环获得数组中的每一个对象
    if(userList.value[i].id == userId){  //判断对象的id属性值 是否 与传入的id值 相等
      userList.value.splice(i,1) //删除集合中对象,参数1,删除元素的下标数,参数2,删除数据行数
      console.log(userList.value)
    }
  }

}

</script>

<template>
  <div>
    <el-table :data="userList" border>
      <el-table-column label="ID" prop="id"></el-table-column>
      <el-table-column label="name" prop="name"></el-table-column>
      <el-table-column label="age" prop="age"></el-table-column>
      <el-table-column label="操作" width="400">
        <template #default = "{row}"> <!--获得操作当前行对象-->
          <el-button type="primary" :icon="Edit" circle />
          <el-button type="danger" :icon="Delete" @click="deleteUser(row.id)" />
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<style scoped>

</style>

 代码显示结果:

 1.点击删除按键后,id为1和2的两行代码已删除不见

 2.控制台中显示按键功能完好

4.编辑修改指定条目信息

啊我暂时还不会,学成回来补上

5.配置问题

1.问题描述:

报错为:

runtime-core.esm-bundler.js:51 [Vue warn]: Failed to resolve component: el-table-column If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement. at <App>

翻译:无法解析组件:el-table 如果这是本机自定义元素,请确保通过compilerOptions.isCustomElement 将其从组件解析中排除。

总之就是Vue 无法解析 el-table-column 组件。

2.解决方案:

确保根组件的挂载是在使用 ElementPlus 之后,修改main.js中代码为:

import './assets/main.css'

import { createApp } from 'vue'
import App from './App.vue'

/* 引入 ElementPlus */
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App);

app.use(ElementPlus)  // 此时 ElementPlus 的使用在根组件的挂载之前,是正确的;
app.mount('#app')

3.问题参考来源:

Vue3解决:[Vue warn]: Failed to resolve component: el-table(或el-button) 的三种解决方案_if this is a native custom element, make sure to e-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值