调用后端接口实现vue.js增删改查

1.请求数据

调用getData通过异步方法在控制台获取数据(数据:data.data.record)
const getData = async () =>{
    const res = await getProducts();
    console.log(res)
}


2.定义列表(columns)


<a-table :columns="columns">

</a-table>
调用columns创建列表
const columns = [
    {
        title:'商品',
        dataIndex:'name'
    },
    {
        title:'价格',
        dataIndex:'price'
    },
    {
        title:'操作',
        dataIndex:'methods'
    }
]


2.1获取接口数据,通过dataSource来实现


const dataSource = ref([]);//双向绑定,初始值为空
再再getData调用函数中把res.data.data.record的值赋值给dataSource.value获取信息到列表当中


2.2定义页码pagination


//页码展示
const pagination = ref({
    current: 1,//当前页
    pageSize: 10,//每页展示多少条
    total: 0,//总共多少条
    showSizeChanger: true,//展示change
    pageSizeOptions: ["2", "3", "5", "10"],
  });
再在getData调用函数中获取总共的数据pagination.value.total = res.data.data.totalItems;


2.3定义每页数据条数@change="handleTableChange"


调用handleTableChange
const handleTableChange = (pageObj) => {
    pagination.value = pageObj;//pageObj赋值给pagination
};


2.4再在getData调用函数中将分页数据传给getData


 const res = await getProducts({
        //传入对应的数据
        pageNumber:pagination.value.current,
        pageSize:pagination.value.pageSize,
    });


2.5添加删除、修改操作按钮


删除操作
<template #bodyCell="{column,record}">
        <a-space v-if="column.dataIndex === 'methods'">
          <a-button>编辑</a-button>
    //删除提示框
          <a-popconfirm
            title="你确认要删除这条数据吗?"
            ok-text="确定"
            cancel-text="取消"
            @confirm="() => deleteItem(record.id)"
          >
            <a-button>删除</a-button>
    </a-popconfirm>
        </a-space>
</template>
{column,record}解构,根据record.id传入的id来删除用户信息
调用deleteItem
const deleteItem = async (id) => {//通过异步方法,接收id删除数据
    await deleteProducts(id);
    //提示信息
    message.success("删除成功!");
    getData();//请求列表
  };


2.6添加a-form表单属性


查询操作
//定义v-model="passData",passData传入后端数据的函数
 <a-form v-model="passData" layout="inline">
      <a-form-item name="name" label="商品">
        <a-input v-model:value="passData.name" />
      </a-form-item>
      <a-form-item name="price" label="价格">
        <a-input v-model:value="passData.price" />
      </a-form-item>
      <a-form-item>
        <a-space>
          <a-button @click="search">查询</a-button>
          <a-button @click="reset">重置</a-button>
        </a-space>
      </a-form-item>
    </a-form>
//调用点击事件search
const search = () =>{
    pagination.value.current = 1;//页码回到第一页
    getData();//请求列表数据
}
将...passData.value添加到getData中,解构来获取搜索的值
//调用reset点击事件重置
const reset = () => {
    pagination.va

Vue3中,实现后端接口增删改查操作通常需要配合Vuex(状态管理库)和axios(HTTP请求库)。以下是基本步骤: 1. **安装依赖**: - 安装Vuex: `npm install vuex` - 如果还没安装axios,可以添加`npm install axios` 2. **创建Vuex store**: - 创建一个store文件(如store.js),并导入axios实例,初始化state用于存储数据,以及action和mutation来处理API请求。 ```javascript import axios from 'axios'; export const state = { items: [] }; export const mutations = { SET_ITEMS(state, response) { state.items = response.data; } }; export const actions = { async fetchData({ commit }) { try { const response = await axios.get('/api/items'); commit('SET_ITEMS', response); } catch (error) { console.error('Error fetching data:', error); } }, // ...添加其他action(例如addItem、updateItem、deleteItem) }; ``` 3. **组件中调用API**: - 在Vue组件里通过`useStore`注入store,并在生命周期钩子(如`created()`或`mounted()`)里调用actions。 ```javascript import { useStore } from '@/store'; setup() { const store = useStore(); onMounted(() => { store.dispatch('fetchData'); }); }, methods: { addItem(itemData) { store.dispatch('addItem', itemData); }, updateItem(id, updatedData) { store.dispatch('updateItem', { id, data: updatedData }); }, deleteItem(id) { store.dispatch('deleteItem', id); } } ``` 4. **响应式更新**: - 当从后端接口获取的数据变化时,由于Vuex的状态是响应式的,视图会自动更新。 记得根据实际需求替换上述代码中的URL和API路径,同时处理好错误处理和分页、排序等额外功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值