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

相关文章

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE