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

react 0至1 案例

/*** 导航 Tab 的渲染和操作** 1. 渲染导航 Tab 和高亮* 2. 评论列表排序*  最热 => 喜欢数量降序*  最新 => 创建时间降序*  1.点击记录当前type*  2.通过记录type和当前list中的type 匹配*/

 

import './App.scss'
import avatar from './images/bozai.png'
import {useState} from "react";
/*** 评论列表的渲染和操作** 1. 根据状态渲染评论列表* 2. 删除评论*/// 评论列表数据
const list = [{// 评论idrpid: 3,// 用户信息user: {uid: '13258165',avatar,uname: '周杰伦',},// 评论内容content: '哎哟,不错哦',// 评论时间ctime: '10-18 08:15',like: 88,},{rpid: 2,user: {uid: '36080105',avatar,uname: '许嵩',},content: '我寻你千百度 日出到迟暮',ctime: '11-13 11:29',like: 88,},{rpid: 1,user: {uid: '30009257',avatar,uname: '前端',},content: '123',ctime: '10-19 09:00',like: 66,},
]
// 当前登录用户信息
const user = {// 用户iduid: '30009257',// 用户头像avatar,// 用户昵称uname: '前端',
}/*** 导航 Tab 的渲染和操作** 1. 渲染导航 Tab 和高亮* 2. 评论列表排序*  最热 => 喜欢数量降序*  最新 => 创建时间降序*  1.点击记录当前type*  2.通过记录type和当前list中的type 匹配*/
// 导航 Tab 数组
const tabs = [{ type: 'hot', text: '最热' },{ type: 'time', text: '最新' },
]const App = () => {// * 1)使用useState维护//  * 2)使用map方法对列表遍历const [commentList,setList] = useState(list)const [type,setType] = useState('hot')const handleTabChange = (type)=>{setType(type)}return (<div className="app">{/* 导航 Tab */}<div className="reply-navigation"><ul className="nav-bar"><li className="nav-title"><span className="nav-title-text">评论</span>{/* 评论数量 */}<span className="total-reply">{10}</span></li><li className="nav-sort">{/* 高亮类名: active */}{tabs.map(item=>(<span key={item.type}onClick={()=>handleTabChange(item.type)}className={`nav-item ${type== item.type&&'active'}`}>{item.text}</span>))}</li></ul></div><div className="reply-wrap">{/* 发表评论 */}<div className="box-normal">{/* 当前用户头像 */}<div className="reply-box-avatar"><div className="bili-avatar"><img className="bili-avatar-img" src={avatar} alt="用户头像" /></div></div><div className="reply-box-wrap">{/* 评论框 */}<textareaclassName="reply-box-textarea"placeholder="发一条友善的评论"/>{/* 发布按钮 */}<div className="reply-box-send"><div className="send-text">发布</div></div></div></div>{/* 评论列表 */}<div className="reply-list">{/* 评论项 */}{commentList.map(item =>(<div key={item.rpid} className="reply-item">{/* 头像 */}<div className="root-reply-avatar"><div className="bili-avatar"><imgclassName="bili-avatar-img"alt=""src={item.user.avatar}/></div></div><div className="content-wrap">{/* 用户名 */}<div className="user-info"><div className="user-name">{item.user.uname}</div></div>{/* 评论内容 */}<div className="root-reply"><span className="reply-content">{item.content}</span><div className="reply-info">{/* 评论时间 */}<span className="reply-time">{item.ctime}</span>{/* 评论数量 */}<span className="reply-time">点赞数:{item.like}</span><span className="delete-btn"></span></div></div></div></div>))}</div></div></div>)
}export default App

 

http://www.lryc.cn/news/372650.html

相关文章:

  • 基于MCU平台的HMI开发的性能优化与实战(上)
  • 【Tkinter界面】Canvas 图形绘制(02/5)
  • 1_常见指令【Linux中常见30个指令的学习和使用】【万字长文】
  • 每日复盘-202406014
  • JavaScript 深拷贝和浅拷贝的实现、使用场景和存在的问题
  • 8个常用的辅助函数!!
  • 服务器数据恢复—OceanStor存储中NAS卷数据丢失如何恢复数据?
  • 54.Python-web框架-Django-免费模板django-datta-able
  • XP系统安装Node.js v8.6.0并搭建Vue2开发环境(项目兼容到Vista的IE9浏览器)
  • redis序列化
  • IOT-Tree 1.7.0实现了一个类似Node-Red的流程功能
  • nc网络收发测试-tcp客户端\TCP服务器\UDP\UDP广播
  • 程序员该有怎么样的职业素养
  • 51交通灯
  • 鸿蒙Arkts上传图片并获取接口返回信息
  • 超文本标记语言(HTML)简介
  • 使用thymeleaf直接渲染字符串
  • Spring Boot整合发送QQ邮箱功能
  • Milvus向量数据库
  • python cls的使用
  • idea中maven下载依赖缓慢解决方法
  • JS 中的各种距离 scrollTop?clientHeight?
  • 继承-进阶-易错点
  • 【图论应用】使用多路图(multigraph)对上海地铁站点图建模,并解决最短路径问题
  • RabbitMQ安装配置,封装工具类,发送消息及监听
  • iOS接入Flutter
  • 【ubuntu】用户添加root权限
  • 设计通用灵活的LabVIEW自动测试系统
  • C# WinForm —— 35 StatusStrip 介绍
  • 如何应对生活中的不确定性:仁者安仁,知者利仁。