【REACT-组件封装1】

系统建模语言 (SysML) 系统建模语言 阅读详情

业务要求:三个表格,只有最后一列的操作按钮不同。

1. NewsPublish.js

import React, { useEffect, useState } from "react";
import axios from "axios";
import { Button, Tag, Table, notification } from "antd";

export default function AuditList(props) {
  const handlePublish = (id) => {
    axios
      .patch(`/news/${id}`, { publishState: 2, publishTime: Date.now() })
      .then((res) => {
        props.history.push(`/publish-manage/published`);
        notification.info({
          message: `通知`,
          description: `你可以到[发布管理-已发布]中查看您的新闻`,
          placement: "bottomRight",
        });
      });
  };

  const columns = [
    {
      title: "新闻标题",
      dataIndex: "title",
      render: (title, item) => {
        return <a href={`#/news-manage/preview/${item.id}`}>{title}</a>;
      },
    },
    {
      title: "作者",
      dataIndex: "author",
      render: (author) => {
        return <span>{author}</span>;
      },
    },
    {
      title: "新闻分类",
      dataIndex: "category",
      render: (category) => {
        return <span>{category?.value}</span>;
      },
    },
    {
      title: "操作",
      render: (item) => {
        return <div>{props.button(item.id)}</div>;
      },
    },
  ];

  return (
    <div>
      <Table
        columns={columns}
        dataSource={props.dataSource}
        pagination={{ pageSize: 5 }}
        rowKey={(item) => item.id}
      ></Table>
    </div>
  );
}

2. usePublish.js

import { useState, useEffect } from "react";
import axios from "axios";
import { notification } from "antd";
export default function usePublish(type) {
  const { username } = JSON.parse(localStorage.getItem("token"));
  const [dataSource, setDataSource] = useState([]);

  useEffect(() => {
    axios
      .get(`/news?username=${username}&publishState=${type}&_expand=category`)
      .then((res) => {
        setDataSource(res.data);
      });
  }, [username, type]);

  const handlePublish = (id) => {
    setDataSource(dataSource.filter((data) => data.id !== id));
    axios
      .patch(`/news/${id}`, { publishState: 2, publishTime: Date.now() })
      .then((res) => {
        notification.info({
          message: "通知",
          description: `您可以到【发布管理-已发布】查看您的新闻`,
          placement: "bottomRight",
        });
      });
  };
  const handleSunset = (id) => {
    setDataSource(dataSource.filter((data) => data.id !== id));
    axios.patch(`/news/${id}`, { publishState: 3 }).then((res) => {
      notification.warn({
        message: "通知",
        description: `您可以到【发布管理-已下线】查看您的新闻`,
        placement: "bottomRight",
      });
    });
  };
  const handleDelete = (id) => {
    setDataSource(dataSource.filter((data) => data.id !== id));
    axios.delete(`/news/${id}`).then((res) => {
      notification.warn({
        message: "通知",
        description: `您已删除已下线的新闻`,
        placement: "bottomRight",
      });
    });
  };

  return {
    dataSource,
    handlePublish,
    handleSunset,
    handleDelete,
  };
}

3. 应用页面

import NewsPublish from "../../../components/publish-manage/NewsPublish";
import usePublish from "../../../components/publish-manage/usePublish";
import { Button } from "antd";

/**
 * 已发布
 */
export default function Published() {
  const { dataSource, handleSunset } = usePublish(2);
  return (
    <div>
      <NewsPublish
        dataSource={dataSource}
        button={(id) => (
          <Button type="primary" danger onClick={() => handleSunset(id)}>
            下线
          </Button>
        )}
      ></NewsPublish>
    </div>
  );
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解决gradle下载慢的问题 allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包。buildScript块的repositories主要是为了Gradle脚本自身的执行,获取脚本依赖插件。根级别的repositories主要是为了当前项目提供所需依赖包。慢的问题在于下载时链接的是官网,而官网下载速度太慢;1、解决gradle不同版本下载慢的问题。但是这个镜像站的版本不全,低版本可以用;有公司做的国内镜像站; 阅读详情

相关推荐

Vue3 + MQTT.js 实现 SCADA 实时数据通信:从不稳定到稳定的完整实践

本文介绍了SCADA组态引擎开发中MQTT协议的应用及优化实践。项目采用MQTT协议实现工业设备数据采集与可视化,但面临连接不稳定、数据格式多样化和数据绑定复杂三大问题。针对MQTT连接问题,分析发现超时设置过短(原8秒)、缺少客户端超时配置和心跳机制是主要原因。优化方案包括:协议转换(mqtt://→ws://)、双重超时保护(15秒手动+30秒客户端)、60秒心跳间隔等,显著提升了连接稳定性。通过完整代码实现展示了连接配置、认证处理和错误处理机制,为物联网数据传输提供了可靠解决方案。

weixin_36794508的博客 1398

组件化开发之如何封装组件-react

组件是构建用户界面的基本单元,它是一个独立的、可重用的、可组合的代码单元,用于表示UI的一部分。人话:当谈论组件时,就像在搭积木一样,每个组件都是一个独立的、可以重复使用的代码块,用来构建网页或应用的各个部分。比如界面的布局,像按钮、文本输入框这样的东西。

ccirclee的博客 2357

MT5策略如何设置回测结果才能最接近实盘

摘要:在MT5回测中,选择"每笔分笔报价"模式最接近实盘交易,因其使用真实Tick数据模拟价格波动、点差和滑点。关键设置包括:下载高质量历史数据、合理设定点差和滑点、使用正常回测速度。该模式能准确测试挂单、止盈止损等策略,虽然速度较慢但结果最可靠,避免其他模式造成的失真,是评估交易策略表现的最佳选择。(149字)

weixin_38915451的博客 1879

React常用组件封装及使用

react组件封装

林靖焙的博客 908

Cartographer全局重定位优化:无初始位姿约束的2万平工厂秒级定位实践

本文深入解析了Cartographer在2万平工业场景中的全局重定位优化实践,通过分支定界优化、子图动态加载和多传感器融合等关键技术,实现了无初始位姿约束下的秒级重定位。特别针对大场景下的快速重定位需求,优化后的系统在RK3588平台上表现出色,定位耗时从47秒降至1.8秒,成功率提升至91%,为工业自动化提供了高效解决方案。

rose2的博客 969

第十一章 React 封装自定义组件

自定义组件是指根据应用需求,自定义的组件。它们可以是有状态的或无状态的,可以接受props并返回JSX或null,并且可以包含生命周期方法、refs、context等等。自定义组件在React应用中非常常见,因为React的核心思想就是组件化。每一个React页面都是由一个或多个组件构成,组件是构建React应用程序的基石。它们可以封装可重用的UI组件,使代码更加模块化和可维护。自定义组件可以有很多用途。例如,它们可以创建可重用的UI组件,如按钮、表单、布局等。

Wait.End的博客 1892

从‘静态拍照’到‘动态录像’:用Malmquist指数讲好你的效率变化故事(附Stata/R代码)

本文深入探讨了如何利用Malmquist指数构建动态效率分析框架,从静态数据到动态叙事的转变。通过分解技术效率变化(EC)和技术进步(TC),结合Stata/R代码实现四种动态可视化方法,帮助研究者更直观地展示效率变化的动态特征。文章还提供了诊断性叙事结构和比较叙事技巧,助力决策者理解效率提升的来源与趋势。

weixin_32678995的博客 603

React组件的封装

使用 模态框 首先定义一个模态框组件的类,关于模态框内部的样式布局我们在这里面写 在父组件中定义控制模态框状态的,以及我们模态框中的标题内容等,在父组件中引入模态框组件时把模态框中需要的内容传入 在父组件中定义控制模态框显示状态的方法,如打开模态框,关闭模态框等,将关闭模态框的函数也传入子组件,在子组件中取消和关闭等组件的点击事件绑定我们传入的关闭模态框函数,实现模态框的打开和关闭 实现模态框打开关闭的过渡动画效果 全部CSS代码 模态框组件代码 主界面...

m0_46527751的博客 2732

Unity URP项目里Post Processing死活没效果?别慌,这5个坑我帮你踩过了

本文详细解析了Unity URP项目中Post Processing效果失效的五大常见问题,包括渲染管线配置冲突、Volume作用域误判、摄像机参数漏配、Layer层级冲突和Profile引用异常。通过实际项目案例和代码示例,提供专业级解决方案,帮助开发者快速排查并修复后处理效果不生效的问题。

weixin_33721427的博客 334

【知识点讲解】大模型参数量与计算量(FLOPs)估算方法

指标参数量 (Params)计算量 (FLOPs)含义模型的大小,静态模型的计算复杂度,动态决定因素模型结构(宽度、深度)模型结构 +输入数据(B, S)影响内存占用、磁盘空间运行速度、能耗单位M (百万), B (十亿)工具thopptflopstorchinfothopptflopsfvcore重要提示FLOPs ≠ 速度:FLOPs 是理论计算量。实际速度还受内存带宽 (Memory Bandwidth)并行度硬件架构等因素严重影响。

AI浩 2098

React——创建组件和封装组件

第一种创建组件的方式:函数组件 import React from 'react' import ReactDOM from 'react-dom' const cat = { name:'Kitty', age:2, gender:'雌' } function Hello(props){ //组件名称首字母必须大写,注意这个props是只读的,不能被重新赋值,这点和vue一样 return ( <> <div>我是一个hello函数组件 ---{props.name}

wukeyan的博客 918

在Simulink中搭建一个基于IoT设备间通信协议栈的仿真模型

物联网(IoT)设备间的通信协议栈仿真对于理解不同层级的协议如何协同工作,以及优化网络性能至关重要。通过Simulink结合MATLAB的强大功能,我们可以模拟和分析从物理层到应用层的完整通信过程。下面详细介绍如何使用Simulink进行IoT设备间通信协议栈的仿真。

amy_mhd的博客 157

从0-1封装一个React组件

是唯一的(去 npmjs.com 搜一下)。确保没有私有配置(如。

jj1245_的博客 339

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

react封装组件问题1----父子组件传参

今天封装了一个组件,发现在引用的时候,绑定点击事件,当点击的时候,事件没有触发,原因是没有处理好点击事件,在封装组件的时候,尽量要避免使用到子向父传递参数, <CardPreview icon={previewSmsIcon} message="短信模版预览" onClick = {() => this.showTemplatePreviewModel(1)} /> 这是父组件, 这是子组件, 当父组件触发onClick事件的时候,子组件通过props

m0_47531829的博客 1305

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

antd组件库封装21-react简介1

前端

qq_41632427的博客 174

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

react 组件封装原则_从0到1教你搭建前端团队的组件系统,进阶高级必备技能

前言随着vue/react这类以数据驱动为主的web框架的不断完善和壮大,越来越多的前端团队开始着手搭建内部的组件库。虽然目前市面上已经有很多功能强大且完善的组件库供我们使用,比如基于react的开源组件库ant-design,material,又比如基于vue的开源组件库elementUI,iView等。我们在开发管理系统或者中台产品时,完全可以使用这种第三方库来开发,因为首先其服务的...

weixin_39568232的博客 265

[项目实战,源码完整]手把手教你怎么封装组件,React 重写学成在线 III_react 函数组件如何重写(1)

这次实现的模块为以下几个被红线画出来的模块:[外链图片转存中…(img-k73u1JTl-1714715937182)][外链图片转存中…(img-RabnKc3O-1714715937183)][外链图片转存中…(img-SfcWbcd3-1714715937184)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

2401_84185626的博客 877

react 组件封装原则_从0到1教你搭建前端团队的组件系统(高级进阶必备)

前言随着vue/react这类以数据驱动为主的web框架的不断完善和壮大,越来越多的前端团队开始着手搭建内部的组件库。虽然目前市面上已经有很多功能强大且完善的组件库供我们使用,比如基于react的开源组件库ant-design,material,又比如基于vue的开源组件库elementUI,iView等。我们在开发管理系统或者中台产品时,完全可以使用这种第三方库来开发,因为首先其服务的...

weixin_39914752的博客 469

react18+antd5.x(1):Notification组件的二次封装

antdesign已经给我们提供了很好的组件使用体验,但是我们还需要根据自己的项目业务进行更好的封装,减少我们的代码量,提升开发体验。

峰会路转的博客 1708

拖拽调宽组件从0到1:原生JS与React封装实战

前端交互中,拖拽调整容器宽度的需求普遍存在于IDE布局、低代码平台配置面板和数据表格列宽调整等场景。实现稳定的拖拽组件,核心在于理解按下、移动、抬起三个事件的完整生命周期,以及最小宽度、最大宽度等边界约束的设定。原生JS方案能帮助开发者彻底吃透底层原理,而React函数组件封装则更适合现代工程化项目,通过Hooks管理状态、规避闭包陷阱并做好组件卸载时的事件清理。掌握快照计算、事件挂载到document、状态机管理等关键技术,能让交互手感顺滑、避免文本选中、卡顿和事件泄漏。本文通过完整的原生JS与React

weixin_28718755的博客 255

react+antd封装表格组件2.0

一个用于暴露自定义ref属性和自定义方法的钩子函数。可以使得父组件可以通过ref访问子组件中定义的方法和属性,从而实现对子组件的精细控制。使用useImperativeHandle时必须与forwardRef搭配使用,否则会报错。此方法把所用方法集体封装,以后就可以无脑开发拉!

ll_883963的博客 702

端侧 AI DEEPSEEK-R1-WEBGPU 项目实战(二):封装进度条组件,看懂 React 事件与组件树

端侧 AI WebGPU 实战第二篇,剖析 React 合成事件底层原理,封装 Progress 进度条组件,讲解 Props 传参、map 列表渲染、组件树,理解交互驱动状态变更的流程。

2503_93701293的博客 323

React中封装组件的一些方法

来源 | https://www.shymean.com/tags最近参与了一个基于Raact技术栈的项目,距离我上一次在工作中react已经过去了挺长一段时间,因此打算整理在react中...

web前端开发 4993

封装dialog_React+Element封装Dialog组件

之前写过一个react项目,一共就几个页面,但是几乎每个页面都有Modal组件(之前是用AntD),而且大多数的功能都很相似,所以想了一下应该开始封装这种类型的组件了。然后今天花了一点时间做了一个小demo。注意这里用到的是React+Element,需要注意的是用create-react-app创建的项目react-hot-loader版本与Element版本好像有冲突,具体原因我还没搞清楚,解...

weixin_39894778的博客 279

基于Ant Design Switch开关组件封装的开和关默认值为1和0的开关组件

碰见一个业务需求需要使用开关组件,后端设置的默认值是1和0,但Ant Design官方Switch组件的默认值是布尔类型true或false,所以自己基于antd 的Switch组件封装一个默认值是1和0的开关组件。

weixin_45067896的博客 2789
上一篇: 【react插件-富文本框react-draft-wysiwyg】
下一篇: react插件-图表echarts
历目
博客等级 码龄6年 8粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值