当前位置: 首页 > 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集结语-动态类名还有高阶的用法,可以去官网看

相关文章:

  • 自己做app的网站北京网站推广排名外包
  • 长沙做医院的网站建设搜索引擎广告的优缺点
  • 西安专业做网站的公司有哪些下载百度地图2022最新版
  • 苏州企业如何建站友情链接有哪些展现形式
  • 音乐网站毕业设计代码2022最新永久地域网名
  • 网站建设程序做哪些南昌seo专业团队
  • 原子操作(CAS)
  • 《TCP/IP 详解 卷1:协议》第13章:TCP连接管理
  • java-SpringBoot框架开发计算器网页端编程练习项目【web版】
  • 马克思主义基本原理知识笔记
  • MediaMarktSaturn EDI 对接指南:欧洲零售卖场的数字化协同范例
  • 虚幻基础:插槽
  • C++面试6——类和结构体的区别和使用场景
  • 零基础学习RabbitMQ(3)--核心概念
  • 打包上传到Linux部署并启动
  • C++ string类的操作
  • FFMPEG常用函数
  • 应用层协议 HTTP
  • 618风控战升级,瑞数信息“动态安全+AI”利剑出鞘
  • 无人机航电系统之语音通信技术篇
  • elk+filebeat收集springboot项目日志
  • 开疆智能CCLinkIE转ModbusTCP网关连接川崎机器人配置案例
  • 桥头守望者
  • WRF模式与Python融合技术在多领域中的应用及精美绘图;Python助力WRF自动化运行、WRF模式前后处理
  • Android Navigation 架构
  • 从虚拟机角度解释python3相对导入问题(下)