当前位置: 首页 > wzjs >正文

二级域名网站建设哈尔滨建设网站

二级域名网站建设,哈尔滨建设网站,电子商务网站建设的体会,手机如何制作一个网站shadcn/ui很灵活可以方便的自己修改class样式,但是仅仅一个确认删除弹窗,需要拷贝太多代码和导入太多包,重复的代码量太多,不利于代码维护。所以进一步封装以符合项目中使用。 封装cx-alert-dialog.tsx import {AlertDialog,Ale…

shadcn/ui很灵活可以方便的自己修改class样式,但是仅仅一个确认删除弹窗,需要拷贝太多代码和导入太多包,重复的代码量太多,不利于代码维护。所以进一步封装以符合项目中使用。

封装cx-alert-dialog.tsx

import {AlertDialog,AlertDialogAction,AlertDialogCancel,AlertDialogContent,AlertDialogDescription,AlertDialogFooter,AlertDialogHeader,AlertDialogTitle,AlertDialogTrigger,
} from "@/components/ui/alert-dialog"
import { Button } from "@/components/ui/button"
import { CustomButton } from "./custom-button"export const CxAlertDialog = (props: {visible: boolean, title?: string, content?: string, cancelText?: string, okText?: string,okColor?: string,loading?: boolean,disabled: boolean,onClose: ()=>void,onOk: ()=>void,
}) => {const buildOkButton = () => {if(props.okColor == "red") {return (<CustomButton variant="destructive" loading={props.loading} disabled={props.disabled} onClick={props.onOk}>{props.okText}</CustomButton>)}else {return (<CustomButton loading={props.loading} disabled={props.disabled} onClick={props.onOk}>{props.okText}</CustomButton>)}}return (<><AlertDialog open={props.visible}><AlertDialogContent><AlertDialogHeader><AlertDialogTitle>{props.title}</AlertDialogTitle><AlertDialogDescription>{props.content}</AlertDialogDescription></AlertDialogHeader><AlertDialogFooter><AlertDialogCancel onClick={props.onClose} disabled={props.disabled}>{props.cancelText}</AlertDialogCancel>{ buildOkButton() }{/* {props.okColor == "red"?<AlertDialogAction className="bg-red-500 hover:bg-red-600" onClick={props.onOk}>{props.okText}</AlertDialogAction>:<AlertDialogAction onClick={props.onOk}>{props.okText}</AlertDialogAction>} */}</AlertDialogFooter></AlertDialogContent></AlertDialog></>)
}

custom-button.tsx

"use client"
import React, { MouseEventHandler } from "react";
import { Button } from "../ui/button";
import LcIcon from "./lc-icon";
import { cn } from "@/lib/utils";/** * Button扩展,增加图标功能 * <CustomButton icon="Loader" onClick={handleSubmit}>Button</CustomButton>* */
export const CustomButton = (props: {variant?: string,size?: string,className?: string,iconClassName?: string,icon?: string, loading?: booleandisabled?: boolean,type?: string,onClick?: MouseEventHandler<HTMLButtonElement>,children?: any
}) => {const buildIcon = () => {if(props.loading != null && props.loading) {return <LcIcon name="Loader" size={16} className={cn("animate-spin", props.iconClassName ?? 'mr-1' )}/>}else if(props.icon != null) {return <LcIcon name={props.icon} size={16} className={props.iconClassName ?? 'mr-1'}/>}return ""}return (<Button size={props.size as any ?? "default"} variant={props.variant as any ?? "default"} type={props.type ?? 'button' as any} className={props.className} disabled={props.disabled} onClick={props.onClick}>{ buildIcon() }{ props.children }</Button>)
}

使用CxAlertDialog组件

const [delAlertVisible, setDelAlertVisible]:[boolean, Dispatch<SetStateAction<boolean>>] = React.useState(false);const [delAlertLoading, setDelAlertLoading]:[boolean, Dispatch<SetStateAction<boolean>>] = React.useState(false);const currOperId = useRef(BigInt(0))const handleDelAlertOk = async () => {setDelAlertLoading(true)await ChapterApi.del(Number(props.docId), currOperId.current).catch((e) => ErrUtils.apiHandle(e)).then((resp)=>{//console.log(resp)if(!resp) returnif(resp?.code == RespCode.Success) {setDelAlertVisible(false)ToastUtils.success({ msg: resp?.msg })currChapterId.current = ""refresh()} else {ToastUtils.error({ msg: resp?.msg ?? "22" })}}).finally(()=>{setDelAlertLoading(false)})}const buildDel = () => {return (<CxAlertDialog visible={delAlertVisible} okColor="red" title="提示" content="确认删除?" cancelText="取消" okText="删除"onClose={() => setDelAlertVisible(false)} onOk={() => handleDelAlertOk()} loading={delAlertLoading} disabled={delAlertLoading}/>)}

文章转载自:

http://qhGwYWPv.mwpcp.cn
http://ncdO7i5T.mwpcp.cn
http://rzdOW6dd.mwpcp.cn
http://2saoFkyI.mwpcp.cn
http://q1DyatEq.mwpcp.cn
http://5JI1GMdG.mwpcp.cn
http://kBS3xypJ.mwpcp.cn
http://PA37GVHd.mwpcp.cn
http://mBkRonpH.mwpcp.cn
http://g6TduZXP.mwpcp.cn
http://hSdCChBl.mwpcp.cn
http://5YiKMslN.mwpcp.cn
http://6EyP49V8.mwpcp.cn
http://2e5mB26z.mwpcp.cn
http://pkLC6qG5.mwpcp.cn
http://OP8o4d1E.mwpcp.cn
http://OmTVEEMM.mwpcp.cn
http://8Ac3MzlL.mwpcp.cn
http://udQ6S5UK.mwpcp.cn
http://tdojM5iZ.mwpcp.cn
http://nLqJLTwD.mwpcp.cn
http://qMNnxvLz.mwpcp.cn
http://rVRstQgZ.mwpcp.cn
http://1TP7BaH1.mwpcp.cn
http://SDtNZija.mwpcp.cn
http://AlT9ICvR.mwpcp.cn
http://1lmAYn4S.mwpcp.cn
http://FaUwSuJP.mwpcp.cn
http://w0UPnvZW.mwpcp.cn
http://Z8wl0PxG.mwpcp.cn
http://www.dtcms.com/wzjs/701572.html

相关文章:

  • 门户网站集群建设方案微信群发布网站建设
  • 网站推广平台有哪些网站怎么做谷歌权重
  • 如何做网站的统计手机百度一下百度
  • 涿州建设局网站山东网站搭建有限公司
  • 宁波网站设计方案社群营销是什么意思
  • 网站开发模式分为怎么弄视频
  • 东莞知名网站大理石在哪些网站做宣传
  • 如何挑选网站主机昆明微网站搭建
  • 泉州外贸网站开发公司网站怎么做链接跳转
  • 惠州网站建设推广公司wordpress 关键字链接
  • 建站后角度是不是0wordpress怎么关注站点
  • 编程跟做网站山东建站商城
  • 个人信息网站建设的心得体会wordpress 支付下载
  • 网站首页幻灯片不显示返利网站 帐如何做
  • 集团公司网站源码下载aws wordpress 免费
  • 上传网站 php 服务器怎么用html做个人的网页
  • 网站怎么注册做资讯的网站
  • 微信网站怎么做手机网页视频下载神器
  • 一份完整的活动策划合肥seo网站多少钱
  • 叮当网站做app网龙网络公司简介
  • 个人做网站赚钱建设门户网站
  • 装修设计图网站排名商城建站
  • 服务器网站崩溃自己的网站什么做优化
  • 做游戏下载网站赚钱php能区别电脑网站和手机网站吗怎么嵌入到phpcms
  • 外贸网站如何做推广怎么样wordpress 小刀娱乐
  • wp网站建设模板小程序推广网站
  • 红安县城乡建设局网站网络游戏名字
  • 公司广告片拍摄公司杭州seo泽成
  • 怎么自己做微网站吗linux下搭建wordpress
  • 哪些企业网站做的比较好最版网站建设案例