react壁纸网站项目开发中的一些思路总结

简介: react壁纸网站项目开发中的一些思路总结


此篇 用来记录一个壁纸小应用网站中的某些功能模块开发思路. 如果能够帮助到您, 非常荣幸. 同时也为了方便自己梳理一下某个功能实现的思路. 方便自己日后学习.

需求

在壁纸详细页面的右上方显示的是该图片的发布者的基本信息(头像, 昵称, 个人简介), 需要实现的需求是点击用户头像, 跳转到他的个人中心页面.

image.png

分析

点击头像之后,调用react-router-dom 提供useNavigate钩子 进行路由跳转到个人中心页面, 跳转的时候我们需要将该用户(也就是该作品的发布者的id)带过去,那我们就可以在个人中心页面拿到这个id, 然后我们配合后端的接口,使用这个id进行用户信息接口的请求, 拿到数据,渲染页面.

我们这里需要动态路由, 因为不用 用户中心基本都是一个样子, 我们可以使用一个页面, 而页面内容的展示取决于用户的id, 因为里面的内容都是通过用户id 进行后端接口调用, 返回用户的信息的.

操作

所以路由配置是这样

js

{ path: "/user/:id", element: <Self /> },

在壁纸详细页面,我们点击头像的时候, 使用react-router-dom 提供useNavigate钩子 进行路由跳转

  • 壁纸信息都保存在picDetail中, 也包含了该壁纸的发布人的id(author),这个id就是我们需要的.
  • 当前壁纸的作者的信息保存image_creator中.
  • 然后使用navigate跳转到中心页

image.png

js

const goto_Personal_homepage = (id)=>{
     navigate(`/user/${id}`)
   }
 
     <Space align="center"  >
             {/* 发布者头像 */}
             <img src={image_creator.user_avatar} alt="发布者头像" className={DetailStyle.publisher}  onClick={()=>goto_Personal_homepage(picDetail.author)} />
             {/* 发布者名字 */}
             <Space align="start"  vertical>
               <span className={DetailStyle.publisher_name}>{userCurrentInfo.user_nickname}</span>
               <span className={DetailStyle.publisher_desc}>{userCurrentInfo.user_description}</span>
             </Space>
    </Space>

在中心页面,使用useParams 钩子函数 拿到动态路由后面的参数, id

jsx

import { useParams } from "react-router-dom";
 export default function Self() {
   // 获取路由参数
   const { id } = useParams();
   ......
 }

然后对于获取用户的信息, 获取用户上传的壁纸, 获取用户喜欢的壁纸, 获取用户收藏的壁纸, 都可以通过这个id来进行获取.

下面渲染模板就不多说了.

jsx

// 获取用户信息
  get_user_info(id).then((res) => {
       console.log(res);
       setuserInfoData(res);
  }); 
 // 获取我上传的壁纸看列表
   const getmyUploadsimageList = async () => {
     get_user_images(id)
       .then((res) => {
         if (res.code == 200) {
           console.log(res);
           setmyUploadsimageList(res.data);
         }
       })
       .catch((err) => {
         console.log(err);
       });
   };
   // 获取我喜欢的图片列表
   const getmyLikesimageList = async () => {
     const res = await get_user_likes(id);
     if (res.code == 200) {
       setmyLikesimageList(res.data);
     }
   };
 
   // 获取我收藏的图片列表
   const getmyCollectsimageList = async () => {
     const res = await get_user_collects(id);
     if (res.code == 200) {
       setmyCollectsimageList(res.data);
     }
   };

不过需要提的一点就是

  • 如果当前中心页面正好是当前用户的中心页面, 那么就需要在中心页面显示编辑个人信息的按钮
  • 而其他用户的中心页面不显示.

我这里是通过条件渲染dom 来做的.

  • 如果从动态路由获取的id(图片的作者id) == 本地存储的user_id, 那么就说明当前中心页正好是当前用户的中心页,那么就进行展示
  • 反之亦然.

jsx

export default function Self() {
   // 获取路由参数
   const { id } = useParams();
   const curId = JSON.parse(localStorage.getItem("userInfo")).user_id;
   const navigate = useNavigate();
   ....
   return(
          <div className={SelfStyle.edit}>
           {id == curId && (
             <Button
               icon={<IconEdit />}
               type="tertiary"
               theme="light"
               style={{ marginRight: 10, color: "white" }}
               onClick={showModal}
             >
               编辑
             </Button>
           )}
         </div>
   )
 }

效果

image.png

总结

主要使用了 React Router 提供的动态路由跳转功能,并结合了 useParams 钩子函数获取路由参数。以及使用条件判断&&通过条件渲染来实现仅在当前用户中心页面显示编辑按钮的功能.


目录
相关文章
|
4月前
|
前端开发 API UED
怎么学习React 18 进行项目开发?
【4月更文挑战第18天】学习React 18涉及新特性如并发模式、Suspense API和自动批处理更新,可提升性能和用户体验。首先了解这些新特性,然后掌握React基础知识,如组件化、JSX、props和state。使用Create React App创建项目,学习如何启用并发模式和使用Suspense显示占位符。实现自定义组件,关注props传递、状态管理和事件处理。通过Profiler优化性能,利用懒加载和代码分割减少加载时间,使用Context API共享状态。不断实践和探索,参考官方文档与社区资源,以提高开发技能。
145 3
|
9月前
|
前端开发 数据库 Docker
一款可以直接使用的招聘网站, react django开发招聘网站,docker 部署
一款可以直接使用的招聘网站, react django开发招聘网站,docker 部署
73 0
|
4月前
|
前端开发 JavaScript API
blog-engine-07-gatsby 建极速网站和应用程序 基于React的最佳框架,具备性能、可扩展性和安全性。
探索多种博客引擎:Jekyll, Hugo, Hexo, Pelican, Gatsby, VuePress, Nuxt.js 和 Middleman。了解Gatsby,基于React的静态站点生成器,以其特性如React基础、静态生成、广泛插件支持、简便部署和现代开发流程脱颖而出。安装Gatsby需先安装Node.js,然后通过`gatsby-cli`创建新站点。开发涉及编写页面、本地开发、生成静态文件及部署。尽管Gatsby具有现代化和高性能优势,但也存在学习曲线和配置复杂性的挑战。
|
JavaScript 前端开发 Java
Java 后端学习路线;程序员是否一定要参与开源;为什么好多大网站用了 vue/react 还在用 jQuery |极客观点
Java 后端学习路线;程序员是否一定要参与开源;为什么好多大网站用了 vue/react 还在用 jQuery |极客观点
138 0
|
前端开发
个人博客 react 网站实现粒子效果
个人博客 react 网站实现粒子效果
个人博客 react 网站实现粒子效果
|
前端开发 图形学
如何使用 react 和 three.js 在网站渲染自己的3D模型
在本文中,我将介绍如何在 react 项目中使用 react-three-fiber 创建的一个3D 软件程序,配置3D 参数(如Blender或Maya)
2094 0
|
前端开发 搜索推荐 测试技术
使用 Google 抓取方式,测试 React 驱动的网站 SEO
本文讲的是使用 Google 抓取方式,测试 React 驱动的网站 SEO,我最近进行了一项测试,它有关客户端渲染的网站是否能避免被搜索引擎的机器人爬取内容。就如我此文所述,React 并不会破坏搜索引擎的索引。
1718 0
|
1月前
|
前端开发 JavaScript UED
React 基础与实践 | 青训营笔记
React 基础与实践 | 青训营笔记
39 0
|
2月前
|
前端开发 JavaScript Java
React 速通笔记
【7月更文挑战第17天】
35 1
|
前端开发
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
66 0