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

React(三)

动态控制显示和css

import { useState } from "react";
import "./index.css";
const list = [
  { id: 1, username: "aaName", content: "一条评论", ctime: "10-18 08:15" },
  { id: 2, username: "bbName", content: "2条评论", ctime: "10-18 08:15" },
  { id: 3, username: "ccName", content: "3条评论", ctime: "10-18 08:15" },
  { id: 4, username: "ddName", content: "5条评论", ctime: "10-18 08:15" },
];
const user = { id: 2, username: "master" };
const HOT = [
  { type: "hot", name: "最热" },
  { type: "new", name: "最新" },
];
function App() {
  const [commitList, setCommitList] = useState(list);
  const [type, setType] = useState("hot");
  // 删除按钮
  function handleClick(id) {
    console.log(id);
    setCommitList(commitList.filter((item) => item.id !== id));
  }
  function changeType(id) {
    setType(id);
    console.log(type);
  }
  return (
    <div className="App">
      <div>
        {HOT.map((item) => (
          <span
            key={item.type}
            onClick={() => changeType(item.type)}
            className={`${type === item.type && "active"}`}
          >
            {item.name}
          </span>
        ))}
      </div>
      <input></input>
      <button>发送</button>
      {commitList.map((item) => (
        <div key={item.id} style={{ borderBottom: " solid 1px", width: "400px" }}>
          <p> 用户{item.username}</p>
          <p> 评论{item.content}</p>
          <p> 时间{item.ctime}</p>
          {/* 只有满足时候才会显示删除按钮 */}
          {user.id == item.id && <button onClick={() => handleClick(item.id)}>删除按钮</button>}
        </div>
      ))}
    </div>
  );
}

export default App;

1、遍历展示评论列表

2、条件控制展示自己的删除按钮

3、点击删除,动态展示更新后数据(不重要 一般后端接口控制)

4、动态控制css样式

主要记住使用条件语句 和模板字符串

 {commitList.map((item) => (
        <div key={item.id}
 style={{ borderBottom: " solid 1px", width: "400px" }}
>
          <p> 用户{item.username}</p>
          <p> 评论{item.content}</p>
          <p> 时间{item.ctime}</p>
          {/* 只有满足时候才会显示删除按钮 */}
          {user.id == item.id && <button onClick={() => handleClick(item.id)}>
删除按钮</button>}
        </div>
      ))}

  className={`xxcss   xxx   active1   ${type === item.type && "active"}`}

优化

使用classname插件 GitHub - JedWatson/classnames: A simple javascript utility for conditionally joining classNames together

npm install classnames

使用

className={`${type === item.type && "active"}`}

优化

 className={classNames({active:type===item.type},'box')}


http://www.kler.cn/a/541126.html

相关文章:

  • 仿 RabbitMQ 实现的简易消息队列
  • Mac(m1)本地部署deepseek-R1模型
  • Expo运行模拟器失败错误解决(xcrun simctl )
  • 【大模型】DeepSeek-V3技术报告总结
  • 计算机毕业设计Spark+大模型知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习
  • 本地搭建DeepSeek环境
  • 每日一题——插入排序实现数据流中的中位数
  • 【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue
  • React Hooks 与 Class 组件相比有何优势
  • 速度超越DeepSeek!Le Chat 1100tok/s闪电回答,ChatGPT 4o和DeepSeek R1被秒杀?
  • Haskell语言的云计算
  • 优化GPT API接口链接的方法
  • 解决 npm : 无法加载文件 D:\nodeJS\node_global\npm.ps1,因为在此系统上禁止运行脚本。
  • Android Studio:如何利用Application操作全局变量
  • 用 Java 轻松读取 Word 文档内容
  • dolphinscheduler安装部署
  • Kotlin Bytedeco OpenCV 图像图像51.2 光流背景消除
  • 部署自动化的重要性之骑士资本案例研读
  • vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本
  • Unity3D实现Shader开发之径向模糊(实现镜头中间不模糊,四周模糊的效果)
  • Reflexxes Type II 机器人和运动控制系统的实时运动规划库
  • 从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
  • 【快速入门】SpringMVC
  • 【k8s应用管理】kubernetes 存储管理
  • 流式传输的实现为什么需要缓存?
  • shell+kafka实现服务器健康数据搜集