Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >react-admin+material ui5.0项目的总结

react-admin+material ui5.0项目的总结

作者头像
爱学习的前端歌谣
发布于 2023-10-18 03:08:57
发布于 2023-10-18 03:08:57
48900
代码可运行
举报
文章被收录于专栏:前端小歌谣前端小歌谣
运行总次数:0
代码可运行

前言

大家好 我是歌谣 今天对于自己的项目做个详细的总结

背景

为了更好的进行前后端的设计开发 后端目前用postgrest设计数据库 前端直接使用react-admin和material ui 5.0进行开发 大大增加开发效率

技术栈

后端 postgrest

前端 react-admin+material ui

页面设计结构

程序的设计分为三个部分 路由 数据 呈现 页面的设计分为三个大块 就是图中的左中右三块

涉及的局部知识点

弹性布局代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <Grid style={{ margin: 0, padding: 0, display: "flex" }} >
 <Grid style={{ width: "200px", margin: "24px 0 0 24px" }} >
 xxxx
 </Grid>
      <Grid style={{ flexGrow: "1", margin: "24px 0 0 24px" }} >
      xxxxx
      </Grid>
    </Grid>

以上就是形成弹性布局的核心代码 向对应的页面中插入dom节点即可展示

左侧 Rc-tree

安装 yarn add rc-tree 务必引入样式

import "rc-tree/assets/index.css"

数据转换部分

数据需要转换为带有title和key的数据 转换的方式有很多种 这边简单写一下转换的过程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  dataProviders.getStyleTree('t_prod_category', 't_prod_style').then((res: any) => {
      console.log(res, "resssssssss")
      let arr: any = []
      let arr1: any = [{
        key: 0,
        title: "品类管理",
      }]
      res && res.map((item: any, index: number) => {
        arr.push({ key: item.id, title: item.category_name, children: [] })
        item.t_prod_style && item.t_prod_style.map((item1: any, index1: any) => {
          if (arr.children) {
            arr[index].children = []
          }
          arr[index].children.push({ key: item1.id, title: item1.style_name })
        })
      })
      console.log(arr, "arr")
      arr1[0].children = arr
      setTreeDataList(arr1)
    })

右侧react-admin

利用react-admin自带router属性进行反复嵌套

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <Admin
            dataProvider={dataProvider}
            basename='/categoryman'
            layout={appLayout}
            i18nProvider={i18nProvider}
          >
            <Resource name='t_base_materiel_type' list={MaterialTypeList} recordRepresentation="name" create={MaterialTypeAdd} edit={MaterialTypeEdit} />
            <Resource name='t_prod_category' recordRepresentation="category_name" list={CategoryList} show={CategoryShow} create={CategoryAdd} edit={CategoryEdit} hasEdit />
            <CustomRoutes>
              <Route path="CatagoryTitle" element={
                <CatagoryTitle handleUpdateList={handleUpdateList}></CatagoryTitle>
              } />
            </CustomRoutes>
          </Admin>

目录数据设计 上下两层 分为两个组件

组件目录设计

小结

增删改查的设计直接利用react-admin即可实现 页面得增删改查可以直接通过表名进行数据 得增删改查设计

贴出增加修改代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as React from 'react';
import { Create, ReferenceInput, SelectInput, SimpleForm, TextInput } from 'react-admin';
import { useNavigate } from "react-router-dom";
import { UserContext } from '../ProductList/CategoryLayout';
export const MaterialStyleListAdd = (props: any) => {
    const navigate = useNavigate()
    const StyleContext:any=React.useContext(UserContext)
    const onSuccess = (data: any) => {
        navigate(-1)
    };
    return (
        <Create mutationOptions={{ onSuccess }} 
        >
            <SimpleForm>
                <ReferenceInput source="style_id" reference="t_prod_style" >
                    <SelectInput disabled defaultValue={StyleContext.styleId}></SelectInput>
                </ReferenceInput>
                <ReferenceInput filter={{ mat_type: StyleContext.typeId }} source="mat_id" reference="t_base_materiel" >
                    <SelectInput></SelectInput>
                </ReferenceInput>
                <TextInput source="count" />
                <TextInput source="description" />
              
            </SimpleForm>
        </Create>
    )
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as React from 'react';
import { Create, Edit, ReferenceInput, SelectInput, SimpleForm, TextInput } from 'react-admin';
import { useNavigate } from "react-router-dom";
import { UserContext } from '../ProductList/CategoryLayout';
export const MaterialStyleListEdit = (props: any) => {
    const navigate = useNavigate()
    const StyleContext:any=React.useContext(UserContext)
    const onSuccess = (data: any) => {
        navigate(-1)
    };
    return (
        <Edit mutationOptions={{ onSuccess }}
        >
            <SimpleForm>
                <ReferenceInput source="style_id" reference="t_prod_style" >
                    <SelectInput disabled></SelectInput>
                </ReferenceInput>
                <ReferenceInput source="mat_id"  filter={{ mat_type: StyleContext.typeId }} reference="t_base_materiel" >
                <SelectInput></SelectInput>
                </ReferenceInput>
                <TextInput source="count" />
                <TextInput source="description" />
            </SimpleForm>
        </Edit>
    )


}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端小歌谣 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于react-admin+postgrest小案例
大家好 我是歌谣 今天继续给大家带来新的技术栈的实践利用的原理是我们的react-admin 创建一个项目 文件在react-admin-version
爱学习的前端歌谣
2023/10/18
2970
关于react-admin+postgrest小案例
react18+vant+zustand4仿微信聊天ReactChat
React18-Chat基于vite4.x构建工具创建react聊天项目,使用react18 hooks函数组件编码页面。
andy2018
2023/08/16
5880
react18+vant+zustand4仿微信聊天ReactChat
【wiki知识库】05.分类管理实现--前端Vue模块
除了分类管理,我们的首页也变动了一下。首页的导航栏加载的是我们已经有的分类,同时还加上了一个欢迎页面。
哈__
2024/06/06
1560
【wiki知识库】05.分类管理实现--前端Vue模块
【wiki知识库】04.SpringBoot后端实现电子书的增删改查以及前端界面的展示
今天主要是把这个网页的界面初步优化一下,修改一下导航栏以及增加电子书管理模块。包含电子书的查询功能、新增功能、编辑功能和删除功能(不包括文档管理)。
哈__
2024/06/04
1900
【wiki知识库】04.SpringBoot后端实现电子书的增删改查以及前端界面的展示
react壁纸网站项目开发中的一些思路总结
此篇 用来记录一个壁纸小应用网站中的某些功能模块开发思路. 如果能够帮助到您, 非常荣幸. 同时也为了方便自己梳理一下某个功能实现的思路. 方便自己日后学习.
心安事随
2024/07/29
1280
react壁纸网站项目开发中的一些思路总结
React Router V6项目中的路由鉴权封装实践(Hooks)
用户10321458
2023/12/03
2.1K0
React Router V6项目中的路由鉴权封装实践(Hooks)
React 结合 Rxjs 使用,管理数据
在使用 React 过程中,我们需要对接口返回的数据进行数据的存储管理。比如用户数据在跨组件中的使用,当然,我们可以使用 localStorage 来管理该用户的信息,这个会在下一篇的文章中介绍,敬请期待~
Jimmy_is_jimmy
2023/04/22
1.9K0
React 结合 Rxjs 使用,管理数据
react-react-dom v6 知识整合
1. BrowserRouter / HashRouter 相当于容器(类似router-view),用于指定路由的模式
用户9914333
2022/12/14
6.6K0
react-react-dom v6 知识整合
React 我爱你,但你太让我失望了
大家好,我是 ConardLi,最近网上掀起了一波吐槽 React 的热潮,不知道你做何感想呢?
ConardLi
2023/01/09
1.2K0
React 我爱你,但你太让我失望了
大爱并发模式!React Router 路由跳转最佳实践的秘密
在 Next.js 大热之前,React Router 是 React 生态中,最流行的路由库。也是我最喜爱的路由库。不过随着版本的迭代,React Router 变得越来越庞大了。他的复杂度已经快要比得上一个框架了。
用户6901603
2024/06/07
6040
大爱并发模式!React Router 路由跳转最佳实践的秘密
React Router V6详解
SAP全称是【single-page application】,中文译为单页面应用。它是网站应用的一种模型,可以动态重写当前的页面来与用户交互,而不需要重新加载整个页面。相对于传统的 Web 应用程序,单页应用做到了前后端分离,即后端只负责处理数据提供接口,而页面逻辑和页面渲染都交由前端处理。前端发展到现在,单页应用的使用已经很广泛,目前时兴的 React、Vue、Angular 等前端框架均采用了 SPA 原则。
xiangzhihong
2023/01/06
8.2K0
swiper + 网易云api 实现音乐卡片[2]
上一篇文章已经把Swiper卡片加入到我们的项目中了,今天这篇文章我们结合一下网易云音乐Api,来实现一个音乐卡片。先看一下实现的效果
用户4793865
2023/01/12
8180
swiper + 网易云api 实现音乐卡片[2]
React-Router V6 使用详解
2.去除Switch中的<Redirect>,用react-router-dom中的Redirect 替代,或者用 <Navigate> 实现
程序狗
2021/12/17
4K0
React Query 指南,目前火热的状态管理库!
React Query 是什么?React Query 是由@TannerLinsley 创建的 npm 库。它是一个针对 React 应用的状态管理器,可以简化许多任务,例如处理 HTTP 请求状态、在客户端保存数据以防止多次请求、使用 hooks 共享数据等等。
ssh_晨曦时梦见兮
2023/05/23
4.9K0
React Query 指南,目前火热的状态管理库!
react-router-鉴权页面闪现
在用户未登录时、打开某个需要鉴权的页面,会出现短暂的目标页面闪现,然后跳转到登录页。 这是因为在页面加载时,会先展示目标页面的内容,然后在进行鉴权检查后才进行跳转的过程导致的。
程序员王天
2023/10/18
3930
React 项目实战 | 原生实现Antd Upload组件的分类拖拽扩展指南
对于文件上传功能,相信很多开发者并不陌生。而部分业务场景,则需要对上传的文件进行分类管理。用户在操作中,有一定概率会弄错文件的分类。而跨分类拖拽重组功能,能降低操作的复杂性,提升用户体验。
叶一一
2025/06/09
2931
React 项目实战 | 原生实现Antd Upload组件的分类拖拽扩展指南
react-router-dom使用指南(最新V6)
注意:BrowserRouter组件最好放在最顶层所有组件之外,这样能确保内部组件使用 Link 做路由跳转时不出错
江一铭
2022/09/23
4.7K0
react-router-middleware-plus开源啦 | 基于react-router v6的零成本式路由权限解决方案
你还在为自行适配react-router v6版本的权限步骤繁杂,多重鉴权逻辑嵌套而烦恼吗?
胡哥有话说
2022/11/22
1.8K1
react-router-middleware-plus开源啦 | 基于react-router v6的零成本式路由权限解决方案
升级到React-Router-v6
近期完成了公司新项目的开发,相关的技术栈都用到了最新版本,react router 也使用了 v6 的版本,所以借这个机会自己再梳理下 react router v5 与 v6 的区别,以及 v6 一些新特性。而在原有项目还是使用老版本 react router 的情况下,不太建议急着直接升级,可能存在较多的改动。
xiaofeng123aa
2022/10/18
2.7K0
sea.js五分钟上手
SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架。本文给大家分享sea.js知识总结,感兴趣的朋友一起学习吧 http://reactjs.cn/ http://reac
王小婷
2018/06/04
2.7K0
相关推荐
关于react-admin+postgrest小案例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验