关于react-admin+postgrest小案例

 前言

36776627d529196d6f80e2499091fe9b.png

 大家好 我是歌谣 今天继续给大家带来新的技术栈的实践利用的原理是我们的react-admin 创建一个项目 文件在react-admin-version

 技术栈

76a4918e7033fa7a38c034787698d506.png

  postgrest数据库  前端react-admin materiel ui+作为组件库

 数据库部署

cdb7d59a3ae4cf99a267d01154cee3e5.png

 本次的数据库是利用腾讯云创建一个postgrest数据库 进行数据库的直连操作即可

  数据库设计部分(ER图)

13a04cf6c57b1a701b181d723f726b86.png

3818a94b5801342dadc17617a8cc5204.png

 建立学校 班级和学生的关系

 配置文件

4db14b251a07a373c44dc238d252aa13.png

db-uri = "postgres://datames:xxxx@xxxxx/datames"
db-schema = "public"
#db-schema = "clouddb"
#db-anon-role = "yjg"
#db-anon-role = "anon"
db-anon-role = "datames"
#server-host = "0.0.0.0"
server-host = "localhost"
server-port = 4001
#server-port = 3001
#jwt-secret="reallyreallyreallyreallyverysafe"

注意要开启云服务器的监听端口 等信息

 后台启动

d1d9eb1bed7aca87d5a27cb4e72efe14.png

f6346d934c61a7582878db14723f541c.png

 前端部分局部代码

e60d20d00594763679a3125e4065e4ff.png

<Admin
dataProvider={dataProvider}
layout={appLayout}
i18nProvider={i18nProvider}
          >
<Resource name='t_geyao_school' recordRepresentation="school_name" create={SchoolCreate} list={ListGuesser} edit={SchoolEdit} />
<Resource name='t_geyao_class' recordRepresentation="class_name" create={ClassCreate} list={ListGuesser} />
<Resource name='t_geyao_teacher' create={TeacherAdd} list={ListGuesser} />
<CustomRoutes>
<Route path="schgeyao/*" element={<SchoolList />} />
<Route path="classgeyao/*" element={<ClassList />} />
<Route path="teachergeyao/*" element={<TeacherList />} />
</CustomRoutes>
</Admin>

 增加

5fe0d8004600904f70c16b4290542a8a.png

import * as React from 'react';
import { Create, ReferenceInput, SelectInput, SimpleForm, TextInput, UpdateParams, useDataProvider, useResourceContext } from 'react-admin';
import { useNavigate } from "react-router-dom";
export const SchoolCreate = (props: any) => {
const navigate = useNavigate()
const onSuccess = (data: any) => {
navigate(-1)
};
return (
<Create mutationOptions={{ onSuccess }}
>
<SimpleForm>
<TextInput source="school_name" />
</SimpleForm>
</Create>
)
}

 编辑

44672f24714b25d3ed1308358b076309.png

import * as React from 'react';
import { Create, ReferenceInput, SelectInput, SimpleForm, TextInput, Edit, UpdateParams, useDataProvider, useResourceContext } from 'react-admin';
import { useNavigate } from "react-router-dom";
export const SchoolEdit = (props: any) => {
const navigate = useNavigate()
const dataprovider = useDataProvider();
const resource = useResourceContext();
const onSuccess = (data: any) => {
const { id, ...res } = data;
const params: UpdateParams = { id: id, data: res } as UpdateParams;
dataprovider.update(resource, params);
navigate(-1)
};
return (
<Edit mutationOptions={{ onSuccess }}
>
<SimpleForm>
<TextInput source="school_name" />
</SimpleForm>
</Edit>
)
}

 查看

8fbefd51e3e1a3c4c0b80b41663804be.png

import { Box, Button, Typography } from "@mui/material";
import { Datagrid, EditButton, List, TextField, ReferenceManyCount } from "react-admin"
import { useNavigate, useParams } from "react-router-dom";
const Empty = () => {
const { id: plant_id } = useParams();
const navigate = useNavigate();
const handleClick = () => {
navigate(`/t_geyao_school/create`);
}
return (
<Box textAlign={'center'} m={1}>
<Typography variant="h4" paragraph>
当前没有学校
</Typography>
<Typography variant="body1">
新加入一个学校信息
</Typography>
<Button onClick={handleClick}>新建学校</Button>
</Box>
)
}
const SchoolList = () => {
return (
<List empty={<Empty />} exporter={false} hasCreate={true} resource="t_geyao_school"
>
<Datagrid >
<TextField source='id' />
<TextField source='school_name' />
<EditButton></EditButton>
</Datagrid>
</List>
)
}
export default SchoolList

 运行结果

2fc53035e1654c821cc9f52dc72fcf21.png

 新增

c29960758071bba459c84a1738d4495c.png

e510ca2bdce5fe6f4bf1222ba8a7491c.png

 查看

31bae55175f3aef10318d1956d92cdf9.png

a563ce78890ef17ea9b193944da7982f.png

 编辑

9e7f72886ef2c6c3f510c3fe5c6142ae.png

2c782d0777adfa5847c38077eed82e0f.png

小结

9893af8b1ac8d3791541b6800b83ce21.png

  对于常规的单表操作 使用当前技术栈还是相当的快捷方便 我是歌谣 最好的种树是十年前 其次是现在

posted @   前端导师歌谣  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示