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

【React HooksRedux--学习小结】

目录

  • 一、React Hooks
    • 1、useState: 可以在函数组件中使用state
    • 2、useRef:看成是createRef的Hook版。
    • 3、useEffect
    • 4、Hooks的使用规则
    • 5、自定义Hooks:在应用中可以将一些需要重复使用的逻辑自定义成Hook
  • 二、Redux
    • 1、三大核心:
    • 2、Redex的函数:
    • 3、store对象提供的方法:

一、React Hooks

1、useState: 可以在函数组件中使用state

2、useRef:看成是createRef的Hook版。

使用方法:

(1)先将ref存入变量

let el = useRef()

(2)再将变量与DOM节点进行绑定,通过ref的current属性来获取DOM节点

<p ref={ el }>web开发</p>

el.current

useRef的作用:

(1)可以绑定DOM组件

(2)可以获取组件渲染之前的数据

3、useEffect

useEffect:在类组件中副作用通常在componentDidMount、componentDidUpdate、componentWillUnMount 生命周期函数中进行处理。
在函数组件中useEffect相当于以上三个钩子函数的集合体。
包含两个参数:第一参数是执行时的回调函数、第二个参数是依赖参数;并且回调函数,还有一个返回函数。

(1)依赖参数:是一个数组,数组中存放的是要依赖的数据,当这些数据更新时就会执行回调函数

(2)执行过程:

组件挂载–>执行副作用(回调函数)–>组件更新–>执行清理函数(返回函数)–>执行副作用(回调函数)–>组件准备卸载–>执行清理函数(返回函数) -->组件卸载

4、Hooks的使用规则

(1)只能在函数组件和自定义的Hooks中调用Hooks。类组件和普通函数不能使用Hooks

(2)只能在函数的第一层中调用Hooks。在函数中若使用了流程控制语句(if、for、while),在流程控制语句不能使用Hooks;若函数中定义了子函数,子函数中也不能使用Hooks

5、自定义Hooks:在应用中可以将一些需要重复使用的逻辑自定义成Hook

示例:自定义一个Hook,返回一个和滚动条位置实时同步的state

二、Redux

Redux:是一个状态管理的库。不是React内置的,是独立的JavaScript的状态容器,提供可预测的状态管理,在React中使用Redux,可以把所有的state集中到组件的顶部,能够灵活地将所有的state分发给所有组件。方便了开发者管理React中的状态,也方便了不同组件间的通信

1、三大核心:

(1)store:是一个数据容器,用来管理和保存整个项目的state。整个项目中只能有一个store

(2)state:是一个对象,在state中存储相应的数据,当开发者需要使用数据时,可以通过store提供的方法来获取state

(3)action:是一个通知命令,用于对state进行修改。通过store提供的方法可以发起action完成对state的修改

2、Redex的函数:

(1)action:本质是JavaScript对象,在action中包含一个字符串类型的type属性,作用是指定要对state进行何种操作。action会通过store将要进行的操作传给reducer函数,由reducer 函数完成对state的修改

action({type:‘add’,data:‘’})

(2)reducer:是一个纯函数。有两个参数state和action。该函数一定有一个返回值,是修改后的state

纯函数:

a、纯函数在执行过程中没有任何副作用。如定时器、网络请求

b、如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部状态或 数据的变化。

function reducer(state={ count:1},action){

switch(action.type){

case ‘ADD’:

return {count: state.count+1 }

case ‘SUB’:

return {count: state.count-1 }

}

return state;

}

(3)createStore:用于创建store,参数必须是reducer,reducer函数名可以自定义

3、store对象提供的方法:

(1)getState:用来获取state

(2)dispatch(action):派发action给reducer

(3)subscribe(listener):会注册一个监听器来监听state的变化。会返回一个注销监听器的方法

Redux的工作模式:发布-订阅模式

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 金融数据分析(一)
  • 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第5章 实时技术
  • uni-app调用Native.jsAPI实现对Android原生日历的增删查操作
  • 关于 promise 的理解(一 )
  • vuex笔记
  • m3u8是什么?
  • 第十九章 维护本地数据库(四)
  • 如何提高安全关键领域的软件开发质量
  • Learning Transferable Features with Deep Adaptation Networks
  • zabbix监控脑裂
  • 网页js实现的各种3D树形结构模型
  • 软考高项——各输入输出文件的含义
  • 让你快速理解工厂模式
  • 牛客网零碎小东西
  • Java面试(五)设计模式
  • Android 控件背景颜色处理
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Android优雅地处理按钮重复点击
  • flutter的key在widget list的作用以及必要性
  • JavaScript的使用你知道几种?(上)
  • MySQL用户中的%到底包不包括localhost?
  • React 快速上手 - 07 前端路由 react-router
  • 跨域
  • 力扣(LeetCode)56
  • 如何学习JavaEE,项目又该如何做?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 你对linux中grep命令知道多少?
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何在招聘中考核.NET架构师
  • ## 1.3.Git命令
  • #android不同版本废弃api,新api。
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2)(2.10) LTM telemetry
  • (52)只出现一次的数字III
  • (补)B+树一些思想
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (转)大道至简,职场上做人做事做管理
  • .NET C# 操作Neo4j图数据库
  • .Net IE10 _doPostBack 未定义
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET8使用VS2022打包Docker镜像
  • .NET建议使用的大小写命名原则
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET面试题(二)
  • .net通过类组装数据转换为json并且传递给对方接口
  • /3GB和/USERVA开关
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [2016.7.Test1] T1 三进制异或