day02-React基础-下
React表单控制
受控绑定
概念:使用React组件的状态(useState)控制表单的状态

非受控绑定
概念:通过获取DOM的方式获取表单的输入数据
案例-B站评论案例

手机输入框评论内容,并发布评论
id处理和时间处理(uuid 和 day.js)
React组件通信
概念:组件通信就是
组件之间的数据传递, 根据组件嵌套关系的不同,有不同的通信手段和方法

A-B 父子通信
B-C 兄弟通信
A-E 跨层通信
父子通信-父传子

基础实现
**实现步骤 **
父组件传递数据 - 在子组件标签上绑定属性
子组件接收数据 - 子组件通过props参数接收数据
props说明
props可以传递任意的合法数据,比如数字、字符串、布尔值、数组、对象、函数、JSX
props是只读对象 子组件只能读取props中的数据,不能直接进行修改, 父组件的数据只能由父组件修改
特殊的prop-chilren
场景:当我们把内容嵌套在组件的标签内部时,组件会自动在名为children的prop属性中接收该内容

父子通信-子传父

核心思路:在子组件中调用父组件中的函数并传递参数
兄弟组件通信

实现思路: 借助
状态提升机制,通过共同的父组件进行兄弟之间的数据传递
A组件先通过子传父的方式把数据传递给父组件App
App拿到数据之后通过父传子的方式再传递给B组件
跨层组件通信
实现步骤:
使用
createContext方法创建一个上下文对象Ctx在顶层组件(App)中通过
Ctx.Provider组件提供数据在底层组件(B)中通过
useContext钩子函数获取消费数据
React副作用管理-useEffect
概念理解
useEffect是一个React Hook函数,用于在React组件中创建不是由事件引起而是由渲染本身引起的操作(副作用), 比 如发送AJAX请求,更改DOM等等
:::warning 说明:上面的组件中没有发生任何的用户事件,组件渲染完毕之后就需要和服务器要数据,整个过程属于“只由渲染引起的操作” :::
基础使用
需求:在组件渲染完毕之后,立刻从服务端获取平道列表数据并显示到页面中
说明:
参数1是一个函数,可以把它叫做副作用函数,在函数内部可以放置要执行的操作
参数2是一个数组(可选参),在数组里放置依赖项,不同依赖项会影响第一个参数函数的执行,当是一个空数组的时候,副作用函数只会在组件渲染完毕之后执行一次 :::warning 接口地址:http://geek.itheima.net/v1_0/channels :::
useEffect依赖说明
useEffect副作用函数的执行时机存在多种情况,根据传入依赖项的不同,会有不同的执行表现
依赖项
副作用功函数的执行时机
没有依赖项
组件初始渲染 + 组件更新时执行
空数组依赖
只在初始渲染时执行一次
添加特定依赖项
组件初始渲染 + 依赖项变化时执行
清除副作用
概念:在useEffect中编写的由渲染本身引起的对接组件外部的操作,社区也经常把它叫做副作用操作,比如在useEffect中开启了一个定时器,我们想在组件卸载时把这个定时器再清理掉,这个过程就是清理副作用
:::warning 说明:清除副作用的函数最常见的执行时机是在组件卸载时自动执行 :::
自定义Hook实现
概念:自定义Hook是以
use打头的函数,通过自定义Hook函数可以用来实现逻辑的封装和复用

React Hooks使用规则
只能在组件中或者其他自定义Hook函数中调用
只能在组件的顶层调用,不能嵌套在if、for、其它的函数中

案例-优化B站评论案例

使用请求接口的方式获取评论列表并渲染
使用自定义Hook函数封装数据请求的逻辑
把评论中的每一项抽象成一个独立的组件实现渲染
Last updated
Was this helpful?