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

黑马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.xdnf.cn/news/1067455.html

相关文章:

  • Springboot项目中使用手机号短信验证码注册登录实现
  • 北京及其周边理工科大学高考招生情况
  • 前端登录状态管理:主流方案对比与安全实践指南
  • Android系统常见有线网卡丢包问题的调试排查方案
  • 【Linux网络编程】多路转接I/O(一)select,poll
  • ci | cd
  • mapbox基础,导出地图
  • Java+GcExcel,生成自定义工作表
  • Rust 项目实战:多线程 Web 服务器
  • 报错:macOS 安装 sentencepiece
  • CentOS 7 通过YUM安装MySQL 8.0完整指南
  • 专题:2025大模型2.0:GPT到DeepSeek技术演进与产业落地报告|附200+份报告PDF汇总下载
  • 云原生周刊:Argo CD v3.1 正式发布
  • MySQL优化:使用 LIMIT 进行分页查询时,偏移量过大造成查询性能降低问题分析
  • AS32A601与ASM1042芯片在电力系统自动化监控中的应用效能分析
  • 基于PostgreSQL的百度或高德等POI多层级分类的数据库设计
  • Towards Generalizable Diabetic Retinopathy Grading in Unseen Domains
  • 【ARM 嵌入式 编译系列 7.5 -- GCC 打印链接脚本各段使用信息】
  • c++IO类
  • HTML语义化标签
  • ubuntu安装postman教程并中文汉化详细教程
  • 互联网大数据求职面试:从Zookeeper到Flink的技术探讨
  • Gateway路径匹配规则易错点
  • 自回归(AR)与掩码(MLM)的核心区别:续写还是补全?
  • VitePress搭建静态博客
  • 【机器人-深度估计】双目深度估计原理解析
  • 【格与代数系统】示例2
  • 黑马程序员苍穹外卖DAY1
  • 【AI News | 20250623】每日AI进展
  • 基于openfeign拦截器RequestInterceptor实现的微服务之间的夹带转发