Skip to content

❤React-增删改查的优化

上一篇文章之中对于增删改查我们进行了初步的使用。这篇文章就带大家优化一下我们之前的增删改查部分

首先是对于使用的接口之中的请求方法部分全部完善归类好地方,并且将我们的接口进行封装

1、接口请求封装

我们先把接口进行一下简单的封装,保证我们的接口可以全部使用公共的

js
import request from '@/utils/request.js'

// 用户列表
export function getUserList (n) {
    return request({
      url: '/api/user',
      method: 'get',
      params:n
    })
}

// 添加用户 
export function addUser (n) {
    return request({
            url: '/api/user',
            method: 'post',
            data:n
    })
}

// 删除用户
export function delUser (id) {
    return request({
      url: '/api/user/'+id,
      method: 'delete'
    })      
}

// 修改用户
export function editUser(n) {
    return request({
            url: '/api/user',
            method: 'put',
            data:n
    })
}

// 获取用户详情
export function getUser(id) {
    return request({
      url: '/api/user/'+id,
      method: 'get'
    })
}
// 修改用户状态 
export function editUserStatus (n) {
    return request({
            url: '/api/user/status',
            method: 'put',
            data:n
    })
}

对于我们的接口进行一下简单的封装以后,接下来在我们的项目之中进行使用

2、页面接口

查询封装

js
// 获取用户--优化后
  const getList = async () => {
      try {
        let queryParams={
          name: name,
          age: age,
        };
        const res = await getUserList(queryParams); // 假设getUser函数能够正确返回Promise对象
        setResult(res.data);
      } catch (error) {
        console.log('查询失败,请重试!');
      }
  }

详情接口

js
const  handleEdit = async (row) => {
      try {
        setLoading(true);
        const response = await getUser(row.id);
        const data = response.data;
        form.setFieldsValue(data); // 填充数据到表单中
      } catch (error) {
        message.error('获取数据详情失败,请重试!');
      } finally {
        setLoading(false);
      }
    setModalVisible(true);
  };

效果查看没问题

image.png

修改接口

js
await editUser(values).then(res => {
            if (res.status == 200) {
                console.log(res, '修改');
            }
 })
 message.success('修改成功');

添加接口

添加之前每次清空一下表单信息,添加接口进行完善

js
const handleAdd = () => {
    form.resetFields();
    setModalVisible(true);
};


await addUser(values).then(res => {
    console.log(res, '增加');
    if (res.status == 200) {
        console.log(res, 'res');
        message.success('添加成功');
    }
})

image.pngimage.png 添加完美

删除接口

删除完善,删除成功以后对于列表进行再次更新

js
const handleDelete = async (record) => {
try {
  await delUser(record.id);
  message.success('删除成功');
  handleSearch();
} catch (error) {
  message.error('删除失败,请重试!');
}
};

删除功能完美! image.png

到这里,我们的增删改差接口已经全都都完善好了,并且毫无问题!

3、优化

接下来对于我们的页面我们进行一下丰富和优化 页面搜索部分优化 ,之前我们搜索部分是这样子的: image.png

(1)简单优化查询:

js

 // 查询表单部分
  const formItemLayout = formLayout === 'horizontal' ? { labelCol: { span: 4 }, wrapperCol: { span: 14 } } : null;
  
const onFormLayoutChange = ({ layout }: { layout: LayoutType }) => {
setFormLayout(layout);
};

<Form
  {...formItemLayout}
  layout={formLayout}
  form={form}
  initialValues={{ layout: formLayout }}
  onValuesChange={onFormLayoutChange}
>
  <Form.Item label="姓名">
    <Input placeholder="请输入姓名"  style={{ width: 200 }}  value={name}  onChange={e => setName(e.target.value)}  />
  </Form.Item>
  <Form.Item label="年龄">
    <Input  style={{ width: 200 }}  placeholder="请输入年龄" value={age}  onChange={e => setAge(e.target.value)} />
  </Form.Item>
  <Form.Item {...handleQuery}>
  <Button onClick={() => {handleQuery()}} type="primary">查询</Button>
  </Form.Item>
  <Form.Item>
  <Button onClick={() => {handleReset()}} type="primary">重置</Button>
  </Form.Item>
</Form>

优化以后的部分:

image.png

(2)添加重置方法:

js
const handleReset = async () => {
    setName('');
    setAge('');
  }

(3)添加更改用户状态功能

对用户的账户状态我们进行管理

js
<Button type="dashed"
              onClick={() => handleEnable(row)}
              autoInsertSpace={false} style={{color:row.state == 1 ? 'red' : "green"}}>
                 {row.state == 1 ? '点击禁用' : '点击启用'}
 </Button>


// 用户禁用启用
  const handleEnable = async (row) => {
   if (row.status == 1) {
     let data=await editUserStatus({id:row.id,status:!row.status});
     console.log(data,'data');
      message.success('用户已禁用');
    //  
   }else{
    let data=await editUserStatus({id:row.id,status:!row.status});
    console.log(data,'data');
    message.success('用户已启用');
   }
   handleSearch();  // 刷新数据
  };

到这里我们的增删改查已经优化成功了!

js
 <Button type="dashed"
              onClick={() => handleEnable(row)}
              autoInsertSpace={false}>
                {row.state == 1 ? '禁用' : '启用'}
</Button>

(4)列表优化,依靠列表进行动态渲染

image.png

(5)渲染数据,空白的时候返回‘--’

image.png

渲染手机号空白数据和住址空白数据

js
{
      title: '手机号',
      dataIndex: 'phone',
      key: 'phone',
      render: (_: any, row) => {
        return (
          <> {row?.phone|| '--'}</>
        )
      },
    },
    {
      title: '住址',
      dataIndex: 'address',
      key: 'address',
      render: (_: any, row) => {
        return (
          <> {row?.address|| '--'}</>
        )
      },
},

Released under the MIT License.