React + 项目(从基础到实战) -- 第六期

2024-04-15 06:04

本文主要是介绍React + 项目(从基础到实战) -- 第六期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引入ant design ui

ui 组件库介绍

组件总览 - Ant Design (antgroup.com)
安装 - Material-UI (mui.com)
Tailwind UI - Official Tailwind CSS Components & Templates

引入antd

Ant Design of React - Ant Design

常用组件

// 引入antd 美化import { Layout } from 'antd';const { Header, Footer, Content } = Layout;//引入组件import {Button,Space,Divider} from 'antd';//引入图标import {PlusOutlined ,BarsOutlined,StarOutlined,DeleteOutlined,} from '@ant-design/icons';//引入组件import {Space,Typography} from 'antd';//引入图标import { FormOutlined } from '@ant-design/icons';import { HOME_PATH } from '../router';const { Title } = Typography;

定义常用的路由常量

export const HOME_PATH='/'export const LOGIN_PATH='/login'export const REGISTER_PATH='/register'export const MANAGE_PATH='/manage/list'

我的问卷: 列表卡片

问卷卡片 : 气泡弹出框使用

 <Popconfirmtitle="复制问卷?"okText="确定"cancelText="取消"onConfirm={duplicate}><Button type="text" icon={<CopyOutlined/>} size="small">复制</Button></Popconfirm>

问卷卡片:confirm弹出框

const {confirm} = Modal;confirm({title: '确定删除吗?',icon: <ExclamationCircleOutlined />,content: '删除后问卷将无法恢复',okText: '确定',cancelText: '取消',onOk() {message.success("删除成功")},onCancel() {message.error("取消删除")},})

问卷卡片

import React , { FC} from "react";import styles from "./QuestionCard.module.scss";import { Link, useNavigate } from "react-router-dom";//引入组件import{Divider, Space, Tag,Button, message, Popconfirm ,Modal} from "antd";//引入icon图标import { EditOutlined, StarOutlined ,BarsOutlined, CopyOutlined, DeleteOutlined ,ExclamationCircleOutlined} from "@ant-design/icons";const {confirm} = Modal;//组件传值//定义属性type PropsType={id:string,title:string,isPublished:boolean,isStar:boolean,answerCount:numbercreateAt:string,}const QuestionCard:FC<PropsType> = (props:PropsType) => {const {id,title,isPublished,isStar,answerCount,createAt}=propsconst nav=useNavigate();function duplicate(){message.success("执行复制")}function del(){confirm({title: '确定删除吗?',icon: <ExclamationCircleOutlined />,content: '删除后问卷将无法恢复',okText: '确定',cancelText: '取消',onOk() {message.success("删除成功")},onCancel() {message.error("取消删除")},})}return (<><div className={styles.container} ><div className={styles.title}><div className={styles.left}><Link to={isPublished ? `/question/stat/${id}` : `/question/edit/${id}`}><Space>{isStar && <StarOutlined style={{color:'red'}}/>}{title}</Space></Link></div><div className={styles.right}><Space>{isPublished ? <Tag color="processing">已发布</Tag>: <Tag>未发布</Tag>}<span> 答卷数量: {answerCount}  </span><span>{createAt}</span></Space></div></div><Divider style={{margin:'10px 0'}}></Divider><div className={styles.bottom}><div className={styles.left}><Space><Button icon={<EditOutlined/>} type="text" size='small' onClick={()=>nav(`/question/edit/${id}`)} >编辑问卷</Button><Button icon={<BarsOutlined/>} type="text" size='small' onClick={()=>nav(`/question/stat/${id}`)}>问卷统计</Button></Space></div><div className={styles.right}><Space><Button type="text" icon={<StarOutlined/>} size="small">{isStar ? "取消标星" : "标星问卷"}</Button><Popconfirmtitle="复制问卷?"okText="确定"cancelText="取消"onConfirm={duplicate}><Button type="text" icon={<CopyOutlined/>} size="small">复制</Button></Popconfirm><Button type="text" icon={<DeleteOutlined/>} size="small" onClick={del}>删除</Button></Space></div></div></div></>)}export default QuestionCard;

星标问卷:列表卡片+分页

和上面差不多

回收站 : 表格


/表格列const tableColums=[{title:"标题",dataIndex:"title",// key:"title"//循环的key,他会默认取dataIndex的值},{title:"是否发布",dataIndex:"isPublished",render:(isPublished:boolean)=>{return isPublished ?  <Tag color="processing">已发布</Tag> : <Tag>未发布</Tag>}},{title:"答卷",dataIndex:"answerCount"},{title:"创建时间",dataIndex:"createAt"}]//问卷列表数据模拟const rawQuestionList=[{//_id:"1"  mondob数据库id:'1',title:"问卷1",isPublished:false,isStar:true,answerCount:100,createAt:"4月5日 12:23"},{id:'2',title:"问卷2",isPublished:true,isStar:false,answerCount:100,createAt:"4月5日 12:23"},{id:'3',title:"问卷3",isPublished:true,isStar:true,answerCount:100,createAt:"4月5日 12:23"},{id:'4',title:"问卷4",isPublished:false,isStar:false,answerCount:100,createAt:"4月5日 12:23"}]<TabledataSource={questionList}columns={tableColums}pagination={false}rowKey={(record)=>record.id}/>

添加恢复删除功能

 //将jsx片段提取成为变量//表格项提取出来const TableElem = <><div style={{marginBottom:"16px"}}><Space><Button type="primary" disabled={selectedIds.length==0}>恢复</Button><Button danger disabled={selectedIds.length==0} onClick={del}>彻底删除</Button></Space></div><TabledataSource={questionList}columns={tableColums}pagination={false}rowKey={(record)=>record.id}rowSelection={{type:"checkbox",onChange:(selectedRowKeys)=>{setSelectedIds(selectedRowKeys as string[])}}}/></>

这篇关于React + 项目(从基础到实战) -- 第六期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/905018

相关文章

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背