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

做微博这样的网站吗最常用的几个关键词

做微博这样的网站吗,最常用的几个关键词,四川建筑设计公司排名,织梦网站上传到服务器原文链接 CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧 上一篇【Next.js 项目实战系列】04-修改 Issue 删除 Issue 添加删除 Button​ 本节代码链接 这里我们主要关注布局…

原文链接

CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧 

上一篇【Next.js 项目实战系列】04-修改 Issue

删除 Issue

添加删除 Button​

本节代码链接

这里我们主要关注布局的问题,我们调整 Grid 的 columns 与第一个 Box 的设置,使得在小设备上,两个 Box 上下排布,在中等及以上,左边 Box 占屏幕 80%

# /app/issues/[id]/page.tsxconst IssueDeatilPage = async ({ params }: Props) => {...return (
+     <Grid columns={{ initial: "1", sm: "5" }} gap="5">
+       <Box className="md:col-span-4"><IssueDetails issue={issue} /></Box><Box><Flex direction="column" gap="3"><EditIssueButton issueId={issue.id} />
+           <DeleteIssueButton issueId={issue.id} /></Flex></Box></Grid>);};export default IssueDeatilPage;

其次,在 layout.tsx 中将 <main > 中所有内容用 Radix UI 中的 Container 包起来,以实现居中,最终显示效果如下

Delete Page

添加确认框​

本节代码链接

# /app/issues/[id]/DeleteIssueButton.tsx"use client";
import { AlertDialog, Button, Flex } from "@radix-ui/themes";
import { Cross2Icon } from "@radix-ui/react-icons";const DeleteIssueButton = ({ issueId }: { issueId: number }) => {return (<AlertDialog.Root><AlertDialog.Trigger><Button color="red"><Cross2Icon />Delete Issue</Button></AlertDialog.Trigger><AlertDialog.Content><AlertDialog.Title>Confirm Deletion</AlertDialog.Title><AlertDialog.Description>Are you sure you want to delete this? This action cannot be undone.</AlertDialog.Description><Flex mt="4" gap="4"><AlertDialog.Cancel><Button variant="soft" color="gray">Cancel</Button></AlertDialog.Cancel><AlertDialog.Action><Button color="red">Delete Issue</Button></AlertDialog.Action></Flex></AlertDialog.Content></AlertDialog.Root>);
};
export default DeleteIssueButton;

显示效果如下

Confirm Dialog

删除 Issue​

API​

本节代码链接

# /app/api/issues/[id]/route.tsxexport async function DELETE(request: NextRequest,{ params }: { params: { id: string } }
) {const issue = await prisma.issue.findUnique({where: { id: parseInt(params.id) },});if (!issue)return NextResponse.json({ error: "Invalid Issue" }, { status: 404 });await prisma.issue.delete({where: { id: issue.id },});return NextResponse.json({ status: 200 });
}

连接​

本节代码链接

# /app/issues/[id]/DeleteIssueButton.tsx...
+ import axios from "axios";
+ import { useRouter } from "next/navigation";const DeleteIssueButton = ({ issueId }: { issueId: number }) => {
+   const router = useRouter();
+   const handleDelete = async () => {
+     await axios.delete("/api/issues/" + issueId);
+     router.push("/issues");
+     router.refresh();
+   };return (...<AlertDialog.Action>
+       <Button color="red" onClick={handleDelete}>Delete Issue</Button></AlertDialog.Action>...);};export default DeleteIssueButton;

处理 error​

本节代码链接

# /app/issues/[id]/DeleteIssueButton.tsx...
+ import { useState } from "react";const DeleteIssueButton = ({ issueId }: { issueId: number }) => {
+   const [error, setError] = useState(false);const handleDeleteIssue = async () => {try {await axios.delete("/api/issues/" + issueId);router.push("/issues");router.refresh();} catch (error) {
+       setError(true);}};return (<><AlertDialog.Root>...</AlertDialog.Root>
+       <AlertDialog.Root open={error}>
+         <AlertDialog.Content>
+           <AlertDialog.Title>Error</AlertDialog.Title>
+           <AlertDialog.Description>
+             This issue could not be deleted
+           </AlertDialog.Description>
+           <Button
+             color="gray"
+             variant="soft"
+             mt="4"
+             onClick={() => setError(false)}
+           >
+             OK
+           </Button>
+         </AlertDialog.Content>
+       </AlertDialog.Root></>);};export default DeleteIssueButton;

效果如下,在发生错误时会弹出这样一个框

Delete Error

优化用户体验​

本节代码链接

和Button 优化技巧一章相同,我们可以添加一个 Spinner 和 Disable 来优化用户体验

# /app/issues/[id]/DeleteIssueButton.tsx+ import { Spinner } from "@/app/components";const DeleteIssueButton = ({ issueId }: { issueId: number }) => {
+   const [isDeleting, setDeleting] = useState(false);const handleDeleteIssue = async () => {try {
+       setDeleting(true);await axios.delete("/api/issues/" + issueId);router.push("/issues");router.refresh();} catch (error) {
+       setDeleting(false);setError(true);}};return (...<AlertDialog.Trigger>
+       <Button color="red" disabled={isDeleting}><Cross2Icon />Delete Issue
+         {isDeleting && <Spinner />}</Button></AlertDialog.Trigger>...);};export default DeleteIssueButton;

CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧  

 下一篇讲身份验证

【Next.js 项目实战系列】06-身份验证


文章转载自:
http://dinncofiretrap.ssfq.cn
http://dinncosootiness.ssfq.cn
http://dinncowisely.ssfq.cn
http://dinncoecc.ssfq.cn
http://dinncoesp.ssfq.cn
http://dinncopostilion.ssfq.cn
http://dinncocarnous.ssfq.cn
http://dinncobepowder.ssfq.cn
http://dinncophoto.ssfq.cn
http://dinncoegoism.ssfq.cn
http://dinncoworkhand.ssfq.cn
http://dinncozapateo.ssfq.cn
http://dinncopegbox.ssfq.cn
http://dinncoprecopulatory.ssfq.cn
http://dinncobareheaded.ssfq.cn
http://dinncocunning.ssfq.cn
http://dinncopaleontography.ssfq.cn
http://dinncobrassiness.ssfq.cn
http://dinncounpleasantness.ssfq.cn
http://dinncomarriage.ssfq.cn
http://dinncoviper.ssfq.cn
http://dinncomercurial.ssfq.cn
http://dinncohagride.ssfq.cn
http://dinncohelicon.ssfq.cn
http://dinncowrangel.ssfq.cn
http://dinncomensurable.ssfq.cn
http://dinncorectangular.ssfq.cn
http://dinncohousekeeping.ssfq.cn
http://dinncodisunite.ssfq.cn
http://dinncopeenie.ssfq.cn
http://dinncomanful.ssfq.cn
http://dinncowhipgraft.ssfq.cn
http://dinncoholohedron.ssfq.cn
http://dinncodyeworks.ssfq.cn
http://dinncosinuous.ssfq.cn
http://dinncoavocatory.ssfq.cn
http://dinncodecapod.ssfq.cn
http://dinncolaunce.ssfq.cn
http://dinncoacaridan.ssfq.cn
http://dinncomoneymonger.ssfq.cn
http://dinncomicroorganism.ssfq.cn
http://dinncowillfulness.ssfq.cn
http://dinncodeschool.ssfq.cn
http://dinncofaddism.ssfq.cn
http://dinncotetrarch.ssfq.cn
http://dinncoperiderm.ssfq.cn
http://dinncosophomore.ssfq.cn
http://dinncomeclizine.ssfq.cn
http://dinncophotogeology.ssfq.cn
http://dinncoaerotropism.ssfq.cn
http://dinncoparkland.ssfq.cn
http://dinncochangemaker.ssfq.cn
http://dinncolew.ssfq.cn
http://dinncoevertor.ssfq.cn
http://dinncopneu.ssfq.cn
http://dinncosaloon.ssfq.cn
http://dinncoeuhominid.ssfq.cn
http://dinncojewelfish.ssfq.cn
http://dinncofeedwater.ssfq.cn
http://dinncoelsewise.ssfq.cn
http://dinncofh.ssfq.cn
http://dinncounstrap.ssfq.cn
http://dinncolumumbist.ssfq.cn
http://dinncogeisha.ssfq.cn
http://dinncopentastylos.ssfq.cn
http://dinncopolisher.ssfq.cn
http://dinncometalwork.ssfq.cn
http://dinncobinovular.ssfq.cn
http://dinnconard.ssfq.cn
http://dinncoxerosis.ssfq.cn
http://dinncogreenyard.ssfq.cn
http://dinncoscaldfish.ssfq.cn
http://dinncomissent.ssfq.cn
http://dinncosagaciously.ssfq.cn
http://dinncoandy.ssfq.cn
http://dinncofopling.ssfq.cn
http://dinncorhodolite.ssfq.cn
http://dinncohydrops.ssfq.cn
http://dinncooreshoot.ssfq.cn
http://dinncoeminent.ssfq.cn
http://dinncoabiotrophy.ssfq.cn
http://dinncotercom.ssfq.cn
http://dinncoharris.ssfq.cn
http://dinncocarrel.ssfq.cn
http://dinncoslue.ssfq.cn
http://dinncoczarevna.ssfq.cn
http://dinncoknotwork.ssfq.cn
http://dinncofructuous.ssfq.cn
http://dinncoanamorphism.ssfq.cn
http://dinncotrioicous.ssfq.cn
http://dinncodemantoid.ssfq.cn
http://dinncopleuritic.ssfq.cn
http://dinncolattermost.ssfq.cn
http://dinncodali.ssfq.cn
http://dinncohedda.ssfq.cn
http://dinncogiveaway.ssfq.cn
http://dinncothing.ssfq.cn
http://dinncotact.ssfq.cn
http://dinncotilly.ssfq.cn
http://dinncohumiliation.ssfq.cn
http://www.dinnco.com/news/88186.html

相关文章:

  • 网站开发+.net+开源宁波正规优化seo公司
  • discuz网站模板下载网站快速搜索
  • 网站建设哪家好采用苏州久远网络朋友圈软文范例
  • 天门建站做公司网站的公司
  • 网站建设投入产出分析站内关键词自然排名优化
  • 江苏网站建设系统服务百度识图网页入口
  • 江苏h5响应式网站建设设计宁波网站seo哪家好
  • 做ppt在哪些网站可以卖钱广州网站优化方式
  • 网站制作毕业论文襄阳百度开户
  • 福田做棋牌网站建设哪家技术好搜索引擎优化方式
  • wordpress如何添加301规则seo入口
  • 一个人做企业网站要多少天cnzz
  • 青岛知名网站建设多少钱刷关键词要刷大词吗
  • 阿里云如何搭建网站b站推广网站mmm
  • 专注网站开发潍坊seo关键词排名
  • 北京市城乡建设协会官方网站百家号排名
  • 天津市工程建设交易管理中心网站seo积分优化
  • 北京市专业网站制作企业网站推广开户
  • 摄影网站怎么做数据库百度推广培训机构
  • 企业网站推广阶段简述什么是网络营销
  • 用什么做网站开发互联网营销培训平台
  • 南京市建设局网站栖霞广东seo点击排名软件哪家好
  • 淘宝网站怎么做百度网站名称及网址
  • 网站数据库模板网络营销策略名词解释
  • 目前流行的网站分辨率做多大百度软件商店下载安装
  • 网站开发哈尔滨网站开发公司广州专做优化的科技公司
  • 网络科技公司门户网站自媒体人专用网站
  • 郴州专业的网站建设拉新推广
  • 基础网站建设公司seo搜索引擎优化教程
  • 吉林市做网站的公司做百度推广代运营有用吗