黑马Day01-03集开始

03集

JSX

jsx里面可以写 表达式,表达式里面会返回一个值

js语法的扩展,需要babel解析才能够在浏览器运行
在这里插入图片描述

语法

使用花括号  {} ,在里面进行编写jsx代码

04集

高频场景

使用引号传递字符串
使用js变量
函数调用和方法调用
使用js对象.js自带的一些对象或new出来的对象

{"this is msg"}
{count}
{getName()}
{new Date().getDate()}
// 使用js对象 {{color:'red',ackground:'green'}}

05集 jsx实现列表渲染

通过 js 的map 方法进行遍历,这里不能够使用for循环
因为 for 不返回值 但是 map 有返回值

{list.map(item => <li key={item.id}>{item.name}</li>)}

这个值可以是字符串,也可以是数字 ,只要唯一即可

06集 条件渲染

这里通过 && (逻辑与), ? : (三元表达式) 实现

{fla &7 <span>this is span</span>}
{loading ? <span>loading......</span> : <span>this is span</span>}

07集 复杂情况-非常多元素

控制非常多的元素,决定是否显示以及显示哪些

通过函数实现.通过自定义函数 + if 判断语句
// 在 APP.js 里面书写
const articleType = 1
function getArticleTem(){if(articleTyp === 1){return <div>我是无图模式</div>}if(articleTyp === 2){return <div>我是单图模式</div>}if(articleTyp === 3){return <div>我是三图模式</div>}
}
function App(){return (<div className='App'>{getArticleTem()}</div>)
}

08集-React事件绑定

on + 事件名称

const handler = () => {console.log("button被点击了")}
<button onClick='handler'>按钮</button>

形参 e
这个e是当前组件
用的最多的是target,e.target

const handler = (e) => {console.log("button被点击了",e)}
<button onClick='handler'>按钮</button>

传递自定义参数
通过箭头函数调用

const handler = (e) => {console.log("button被点击了",e)}
<button onClick='() => {handler('jack')}'>按钮</button>

同时传递 e 和 自定义参数

const handler = (e) => {console.log("button被点击了",e)}
<button onClick='(e) => {handler('jack')}'>按钮</button>

09 集 组件

组件有自己的UI和逻辑,可以和其他组件互相嵌套
组件可以复用多次
开头首字母大写
下面就是自定义组件

function Button(){return <Button>click me!</Button>
}

使用,两种使用方式

<Button />
<Button></Button>

10集 useState

react的hook函数.向组件添加一个状态变量,影响组件的渲染结果
// 第一个是变量,第二个是函数,用来修改count的值,第三个括号里面是count初始值

const [count,setSount] = useState(0)
function App(){useState [count,setCount] = useState(0)// 这里修改了,组件会重新渲染const change = () => {setCount(count+1)}return (<div><button onClick={change}>{count}</button></div>)
}

如果修改了值,则这个组件会重新渲染

11集 useState修改规则

只有通过 setCount,也就是在 useState里面写的方法,才会重新渲染组件

修改对象–{name:“小明”}

通过方法

const [name,setName] = useState({name:"小李"})
const change = () =>{setName(...name{name:"小6"})
}

12集-基础样式控制

行内样式

不推荐
样式属性字段需要驼峰形似书写
在这里插入图片描述
在这里插入图片描述

抽取行内样式

const style = {//todo}
然后把对象放进去

class类名控制

1. 写css文件,里面写样式1.1 .foo{background: green;}
3. import './index.css'
4. <div className='foo'></div>

13集列表渲染

自己去B站看怎么实现吧,老师准备的课件比较麻烦,需要自己写
这里需要定义一个方法,然后再函数里面使用map的遍历方法进行遍历,然后返回

14集-删除评论功能实现

给每个数据加上一个 key={item.id} ,然后添加方法 ,遍历数组,相等就删除,然后再重新赋值
自己的评论才显示删除按钮,需要多一个判断,当前用户userid和评论的userid相等才显示删除按钮

15集-切换tab功能实现

固定套路: 1 点击哪个tab,记录该tab的id 2. 然后再遍历的时候,和每个tab做匹配,如果匹配上,就把需要高亮显示的tab上写上对应的样式

通用思路

记录当前tab的唯一id
第二步,使用 {},里面在使用 ${} 比较当前评论所属type是否和点击的 type一致
核心代码

核心代码2
在这里插入图片描述

16集-评论排序功能实现

思路

js的数组有方法,可以进行排序.点击调用方法
在方法里面进行排序,然后通过 useState里面的方法进行设置更新

工具类 lodash 可以进行排序,生成新的数据不更改老数据

执行 npm i lodash
引入 import _ from ‘lodash’
使用

_.orderBy(commnetList,'like','desc')
_.orderBy(commentList,'times','desc')

17集classnames类名优化控制工具

classnames 一个简单的js库,通过条件动态控制class类名显示
npm i classnames
<span className={className(‘’,{active: type === item.type})}>
第一个参数是动态的类名,第二个是一个对象,key是要显示的类名,value是控制条件

17集结语-动态类名还有高阶的用法,可以去官网看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/bicheng/86189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 路由学习

params 不能传递对象类型如 [ ]和{ } query传参 总结&#xff1a; query传参既可以通过name 和path 找到路由规则里的组件&#xff0c;所以为了统一避免非必要麻烦 无论是使用query传参还是 params传参 映射路由建议统一使用 name 进阶 props的使用 备注&#xff1a;资料来自…

JDK安装全攻略:开启Java编程大门

目录 一、安装前准备1.1 确认系统类型1.2 检查系统要求1.3 下载 JDK 安装包 二、Windows 系统下 JDK 安装步骤2.1 双击安装包2.2 选择安装目录2.3 完成安装 三、Windows 系统环境变量配置3.1 打开环境变量设置3.2 配置 JAVA_HOME 变量3.3 配置 Path 变量3.4 验证配置 四、Linux…

《P1253 扶苏的问题》

题目描述 给定一个长度为 n 的序列 a&#xff0c;要求支持如下三个操作&#xff1a; 给定区间 [l,r]&#xff0c;将区间内每个数都修改为 x。给定区间 [l,r]&#xff0c;将区间内每个数都加上 x。给定区间 [l,r]&#xff0c;求区间内的最大值。 输入格式 第一行是两个整数&…

09.【C语言学习笔记】指针(一)

目录 1. 内存和地址 1.1 内存 1.2 究竟该如何理解编址 2. 指针变量和地址 2.1 取地址操作符&#xff08;&&#xff09; 2.2 指针变量和解引用操作符&#xff08;*&#xff09; 2.2.1 指针变量 2.2.2 如何拆解指针类型 2.2.3 解引用操作符 * 2.3 指针变量的大小…

Java中static关键字的作用与使用详解

static是Java中一个非常重要的关键字&#xff0c;它可以用来修饰变量、方法、代码块和嵌套类。下面将从多个方面详细解释static的作用和使用方法。 一、static变量&#xff08;类变量&#xff09; 作用 static变量属于类&#xff0c;而不是类的某个实例。所有实例共享同一个s…

HMLDM-UD100A 型工业激光测距仪通过modbusRTU 转 profinet 网关轻松接入到西门子1200plc

HMLDM-UD100A 型工业激光测距仪通过modbusRTU 转 profinet 网关轻松接入到西门子1200plc 在现代工业生产与自动化控制领域&#xff0c;精准的测量设备与高效的通信技术至关重要。HMLDM-UD100A 型工业激光测距仪凭借其高精度、稳定性强等优势&#xff0c;广泛应用于各类工业场景…

数据结构与算法:图论——深度优先搜索dfs

深度优先搜索dfs 提到深度优先搜索&#xff08;dfs&#xff09;&#xff0c;就不得不说和广度优先搜索&#xff08;bfs&#xff09;有什么区别 根据搜索方式的不同&#xff0c;可以将图的遍历分为「深度优先搜索」和「广度优先搜索」。 深度优先搜索&#xff1a;从某一顶点出…

数组题解——​合并区间【LeetCode】

56. 合并区间 排序&#xff1a; 将所有区间按起始位置 start 从小到大排序。这样&#xff0c;重叠的区间会相邻排列&#xff0c;方便后续合并。 合并&#xff1a; 初始化一个空列表 merged&#xff0c;用于存储合并后的区间。遍历排序后的区间列表&#xff1a; 如果 merged 为…

关于高精度和链表的详细讲解(从属于GESP五级)

本章内容 高精度 链表 位数再多&#xff0c;只管稳稳进位&#xff0c;终会把答案写满。 一、高精度 1. 什么是高精度 • 定义 “高精度整数”指不受 C 原生整型 (int / long long) 位宽限制&#xff0c;而用数组模拟任意位数的大整数。 • 必要性 64 位 long long 仅能…

Python自动化框架选型指南:Selenium/Airflow/Celery该选谁?

在Python自动化领域,Selenium、Airflow和Celery是三个高频出现的工具,但它们的定位和适用场景截然不同。许多开发者在技术选型时容易混淆它们的边界,导致项目架构臃肿或功能不匹配。本文将通过对比分析,帮你明确不同场景下的最佳选择。 一、框架定位与核心功能对比 框架核…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DrinkWater(喝水记录组件)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— DrinkWater组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API 和 <script setup> 语法结…

UAVAI-YOLO:无人机航拍图像的小目标检测模型

摘要 针对无人机航拍图像目标检测效果差的问题&#xff0c;提出改进的UAVAI-YOLO模型。首先&#xff0c;为使模型获得更加丰富的语义信息&#xff0c;使用改进可变形卷积网络&#xff08;deformable convolutional networks&#xff0c;DCN&#xff09;替换原骨干&#xff08…

Solidity 入门教程(一):Hello Web3,从一个字符串开始!

学习 Solidity 最好的方式&#xff0c;就是写出你的第一个合约&#xff01;在本篇文章中&#xff0c;我们将用极简的代码&#xff0c;通过 Remix 平台快速实现并运行一个 “Hello Web3!” 合约&#xff0c;正式迈入智能合约开发的大门。 一、什么是 Solidity&#xff1f; Sol…

串扰与包地

串扰与包地&#xff1a; 串扰与包地一直是业界非常关心的一个问题&#xff0c;围绕着它们的争论非常多&#xff0c;那到底是包地好 还是不包地好呢?高速先生尝试着从理论和实际测试上来给大家做一个分析。 为了验证它&#xff0c;高速先生做了以下几种情况&#xff0c;如图5-…

leetcode hot 100之:二叉树的最近公共祖先

本来不打算写的哈哈哈但是发现这一道递归我是有思路的&#xff01;&#xff01;自己能想到一些方向&#xff01;我真棒&#xff01;所以记录一下哈哈哈 我的思路&#xff1a; 1、祖先一定是自身或往上找&#xff0c;所以如何逆着走呢&#xff1f; 2、3种情况&#xff1a; 有…

【VUE】某时间某空间占用情况效果展示,vue2+element ui实现。场景:会议室占用、教室占用等。

某时间某空间占用情况效果展示&#xff0c;vue2element ui实现。场景&#xff1a;会议室占用、教室占用等。 场景说明&#xff1a; 现在需要基于vue2和el-table实现每日会议室个时间点占用情况。 已知数据&#xff1a; 1、会议室数据&#xff08;名称&#xff0c;id&#xff…

Git更换源方式记录

本文首发地址&#xff1a;https://www.dawnsite.cn/archives/198.html 该方式前提是本地项目已关联远程仓库&#xff0c;由于业务变更git地址改变 1. 移除本地已有远程仓库 git remote remove origin2. 添加新的远程仓库源 git remote add origin "clone地址"3.一步…

前端面试专栏-主流框架:12. Vue3响应式原理与API

&#x1f525; 欢迎来到前端面试通关指南专栏&#xff01;从js精讲到框架到实战&#xff0c;渐进系统化学习&#xff0c;坚持解锁新技能&#xff0c;祝你轻松拿下心仪offer。 前端面试通关指南专栏主页 前端面试专栏规划详情 Vue3响应式原理与API详解 一、引言 Vue3作为Vue.j…

DAY 37 早停策略和模型权重的保存

早停策略 import torch.nn as nn import torch.optim as optim import time import matplotlib.pyplot as plt from tqdm import tqdm# Define the MLP model class MLP(nn.Module):def __init__(self):super(MLP, self).__init__()self.fc1 nn.Linear(X_train.shape[1], 10)s…

零基础搭建Spring AI本地开发环境指南

Spring AI 是一个 Spring 官方团队主导的开源项目&#xff0c;旨在将生成式人工智能&#xff08;Generative AI&#xff09;能力无缝集成到 Spring 应用程序中。它提供了一个统一的、Spring 风格的抽象层&#xff0c;简化了与各种大型语言模型&#xff08;LLMs&#xff09;、嵌…