返回
React入门实战:使用Ant Design构建用户管理系统
前端
2023-09-16 06:36:04
写在前面
在上节课中,我们实现了简单的表单,如下。今天,我们将学习最常见的表单组件的使用。一步步向更复杂的页面进发。
本次页面核心知识点:(1)搜索表单模块——搜索、重置功能。
搭建用户管理页面
1. 创建项目
首先,我们需要创建一个新的React项目。可以使用create-react-app工具,它可以快速创建一个包含所有必要依赖项的项目。
npx create-react-app my-user-management-app
2. 安装Ant Design
接下来,我们需要安装Ant Design库。Ant Design是一个流行的React UI库,它提供了丰富的组件和样式。
npm install antd
3. 创建基本布局
在src
文件夹中,创建一个名为App.js
的文件。这个文件将作为应用程序的主组件。在App.js
中,我们可以创建基本布局,包括头部、内容和底部。
import React from "react";
import { Layout } from "antd";
const { Header, Content, Footer } = Layout;
const App = () => {
return (
<Layout>
<Header>Header</Header>
<Content>Content</Content>
<Footer>Footer</Footer>
</Layout>
);
};
export default App;
4. 创建用户列表页面
在src
文件夹中,创建一个名为UserList.js
的文件。这个文件将作为用户列表页面的组件。在UserList.js
中,我们可以使用Ant Design的表格组件来显示用户列表。
import React, { useState, useEffect } from "react";
import { Table, Button } from "antd";
const UserList = () => {
const [users, setUsers] = useState([]);
useEffect(() => {
// 从服务器获取用户列表
fetch("http://localhost:3000/users")
.then((res) => res.json())
.then((data) => setUsers(data));
}, []);
const columns = [
{
title: "ID",
dataIndex: "id",
key: "id",
},
{
title: "姓名",
dataIndex: "name",
key: "name",
},
{
title: "邮箱",
dataIndex: "email",
key: "email",
},
{
title: "操作",
key: "action",
render: (record) => {
return (
<div>
<Button type="primary" size="small">
编辑
</Button>
<Button type="danger" size="small">
删除
</Button>
</div>
);
},
},
];
return (
<div>
<h1>用户列表</h1>
<Table columns={columns} dataSource={users} />
</div>
);
};
export default UserList;
5. 创建添加用户页面
在src
文件夹中,创建一个名为AddUser.js
的文件。这个文件将作为添加用户页面的组件。在AddUser.js
中,我们可以使用Ant Design的表单组件来收集用户的信息。
import React, { useState } from "react";
import { Form, Input, Button } from "antd";
const AddUser = () => {
const [form] = Form.useForm();
const onFinish = (values) => {
// 将用户数据发送到服务器
fetch("http://localhost:3000/users", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(values),
})
.then((res) => res.json())
.then((data) => {
// 添加用户成功后,重置表单
form.resetFields();
});
};
return (
<div>
<h1>添加用户</h1>
<Form
form={form}
name="add-user-form"
onFinish={onFinish}
autoComplete="off"
>
<Form.Item
label="姓名"
name="name"
rules={[{ required: true, message: "请输入姓名" }]}
>
<Input />
</Form.Item>
<Form.Item
label="邮箱"
name="email"
rules={[{ required: true, message: "请输入邮箱" }]}
>
<Input />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
添加
</Button>
</Form.Item>
</Form>
</div>
);
};
export default AddUser;
6. 创建编辑用户页面
在src
文件夹中,创建一个名为EditUser.js
的文件。这个文件将作为编辑用户页面的组件。在EditUser.js
中,我们可以使用Ant Design的表单组件来收集用户的信息。
import React, { useState, useEffect } from "react";
import { Form, Input, Button } from "antd";
const EditUser = ({ match }) => {
const [form] = Form.useForm();
const [user, setUser] = useState(null);
useEffect(() => {
// 从服务器获取用户信息
fetch(`http://localhost:3000/users/${match.params.id}`)
.then((res) => res.json())
.then((data) => setUser(data));
}, [match.params.id]);
const onFinish = (values) => {
// 将用户数据发送到服务器
fetch(`http://localhost:3000/users/${match.params.id}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(values),
})
.then((res) => res.json())
.then((data) => {
// 编辑用户成功后,返回用户列表页面
window.location.href = "/users";
});
};
return (
<div>
<h1>编辑用户</h1>
{user && (
<Form
form={form}
name="edit-user-form"
onFinish={onFinish}
autoComplete="off"
initialValues={user}
>
<Form.Item
label="姓名"
name="name"
rules={[{ required: true, message: "请输入姓名" }]}
>
<Input />
</Form.Item>
<Form.Item
label="邮箱"
name="email"
rules={[{ required: true, message: "请输入邮箱" }]}
>
<Input />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
保存
</Button>
</Form.Item>
</Form>
)}
</div>
);
};
export default EditUser;
7. 配置路由
在src
文件夹中,创建一个名为App.js
的文件。这个文件将作为应用程序的主组件。在App.js
中,我们可以配置路由,以便用户可以在不同的页面之间导航。
import React from "react";
import { Layout, Menu, Breadcrumb } from "antd";
import { Link, Route, Switch } from "react-router-dom";
import UserList from "./UserList";
import AddUser from "./AddUser";
import EditUser from "./EditUser";
const { Header, Content, Footer } = Layout;
const App = () => {
return (
<Layout>
<Header>
<Menu theme="dark" mode="horizontal">
<Menu.Item key="1">
<Link to="/">用户列表</Link>
</Menu.Item>
<Menu.Item key="2">
<Link to="/add-user">添加用户</Link>
</Menu.Item>
</Menu>
</Header>
<Content>
<Switch>
<Route exact