vue-cli3+axios+element实现调用后端接口实现表格的增删改查,给出详细vue3代码
时间: 2024-12-23 12:25:50 浏览: 0
在Vue CLI 3 中,结合 Axios 和 Element UI 实现表格的增删改查操作,你需要做以下几个步骤:
1. **安装所需的依赖**:
```bash
npm install axios element-ui @element-plus/cli
```
2. **配置Element Plus**:
在`.env.js`中设置Element Plus的主题和其他配置:
```javascript
import Vue from 'vue'
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import ElMessage from 'element-plus/es/message'
import 'element-plus/dist/index.css'
Vue.config.productionTip = false
createApp(App)
.use(ElementPlus)
.use(ElMessage)
.use(router)
.mount('#app')
```
3. **创建数据状态(Vuex)**:
```javascript
// store/modules/api.js
export const state = {
tableData: [],
};
export const mutations = {
setTableData(state, newData) {
state.tableData = newData;
},
};
export const actions = {
async fetchData({ commit }) {
try {
const response = await axios.get('/your-api-url');
commit('setTableData', response.data);
} catch (error) {
console.error('Error fetching data:', error);
}
},
// ...添加其他action(例如addItem、updateItem、deleteItem)
};
// 在store/store.js中引入并导出模块
import api from './modules/api';
export default {
state,
getters,
mutations,
actions,
};
```
4. **组件中使用表格和操作按钮**:
```html
<template>
<div>
<el-table :data="tableData">
<!-- 表头和列 -->
<el-table-column prop="prop" label="标题"></el-table-column>
<!-- 添加/删除/编辑按钮 -->
<el-table-column type="action">
<template slot-scope="{ $index, row }">
<button @click="edit(row)">编辑</button>
<button @click="deleteRow($index)">删除</button>
</template>
</el-table-column>
</el-table>
<!-- 新增行 -->
<el-form ref="addForm" v-if="showAddForm">
<!-- 添加表单内容 -->
<el-button @click="hideAddForm">取消</el-button>
<el-button type="primary" @click="submitAddForm">保存</el-button>
</el-form>
</div>
</template>
<script>
import { mapActions, mapState } from 'vuex';
export default {
computed: {
...mapState(['tableData']),
showAddForm() { return this.$store.state.showAddForm; }, // 根据Vuex的状态控制显示隐藏
},
methods: {
...mapActions(['fetchData', 'addItem', 'deleteRow', 'edit']), // 获取和触发动作
fetchTableData() {
this.fetchData();
},
edit(row) {
// 调整form状态,展示编辑模态
this.$store.commit('showAddForm', true); // 设置标志,表明处于编辑模式
this.$refs.addForm.resetFields(); // 清空表单
this.$set(this.$store.state, 'currentEditingItem', row);
},
hideAddForm() {
this.$store.commit('showAddForm', false);
},
submitAddForm() {
// 对新数据进行验证,然后提交到后端
// 这里省略了具体的表单验证,实际项目中请确保数据完整和正确
const newItem = { ...this.$store.state.currentEditingItem, // 获取当前编辑的item
// ...填充新增字段
};
this.addItem(newItem);
this.hideAddForm();
},
deleteRow(index) {
this.deleteRow(index);
},
},
created() {
this.fetchTableData();
},
};
</script>
```
5. **触发表单状态的改变**:
在需要的地方调用对应的 Vuex 动作,比如用户点击按钮时。
现在你已经有了一个基础的表格增删改查功能,可以根据需要进一步优化,比如加入表单验证和更复杂的业务逻辑。
阅读全文