react hook的理解
React Hook(以下简称Hook)是React16.8版本新增加的一种可以让函数组件使用 state 和其他 React 特性的函数。
典韦 在Hook之前,React组件被分为函数组件和类组件两种,函数组件只能写出一个静态的UI组件,没有状态,没有生命周期方法。而类组件可以拥有自己的状态和生命周期方法,但是Class组件在编写过程中发现容易出现很多问题,例如this绑定和大量代码难以维护等。为了解决这些问题,React官方团队在16.8版本中引入了Hook。
通过Hook,函数组件可以拥有相似于Class组件的功能,例如state状态管理、生命周期、Context、Refs(Refs处理HTML元素或类组件实例,而无需使用findDOMNode),并且可以在不需要修改UI结构的情况下实现复杂的特性,避免了类组件的一些问题。
带来这些变化的Hook规则有两个基本原则:
1. 只在最顶层使用Hook,不要在循环,条件或嵌套函数中调用Hook,保证调用Hook的完整性一致。
大年30>关于兔的古诗
2. 只在React函数中调用Hook,不要在普通的JavaScript函数中调用Hook。
Hook有以下的一些常用方法:
uState
在函数组件中,通过uState Hook来声明和使用state状态,它的一些特点和注意事项:
1. 使用数组解构来获取 uState Hook,第一个是state的值,第二个是更新state的函数。
2. uState第一个参数是初始的state值,可以是任何类型。
6月10日是什么星座
3. uState返回一个数组,其中第一个值是state的当前值,第二个值是更新state的函数。
食堂承包合同书
4. 应该避免向uState传递一个可能会被多次计算的表达式,应该将计算函数放在uEffect中进行处理。
5. 设置state是异步的,因此如果对state的多个值进行操作,建议使用合并对象的方式,而不是多个tState。
uEffect
在函数组件中,使用uEffect来添加副作用。它的用途有以下几种:
1. 执行数据获取、设置订阅以及手动更改React组件中的DOM节点。
2. execute data fetching, tting up a subscription, and manually changing the DOM in React components.
3. 在组件挂载和卸载(intial和final)的生命周期调用这两个不同的effect(componentDidMount/componentWillUnmount)
4. 在state更新后,使用effect来重新渲染组件。
在使用uEffect的时候需要注意以下点:
1. 使用uEffect时,可以有多个effect,为了更容易的组织代码,建议把不同的effect拆分成不同的函数。
动词英语 2. 在effect中,可以有异步的执行操作,也可以异步请求数据。
3. effect函数最终要返回cleaner函数,用于在组件卸载时及时清除数据或调用取消订阅的方法。
使用 uContext 来获取上下文,比如在React中使用Context来在应用程序的组件之间共享数据。使用Context可以避免通过组件树跨越多层次的传递Props,这样可以优化组件的性能。
使用uContext的时候需要注意:
1. 在ReactUI库中,Context通常用于为许多组件提供无需命名的颜色或主题。
2. 当组件深度大于3层时,使用Context通常是一个更好的选择。
3. Context最好只提供一个种类型的数据,也是避免维护上下文的比较复杂方法之一。
使用uRef来创建一个Ref对象,可以在React组件中保存普通的JavaScript对象,这些对象可以在组件重新渲染时保留不变。uRef所创建的对象在整个组件中都是唯一的。它不会生成新的Ref属性。Ref对象被设计为保存对DOM节点的引用。
使用uRef应该注意以下几点:
1. uRef可以保存任何可以保存的值,包括字符串、数字、布尔值、DOM节点等。
2. 当Ref在元素的构造函数中被使用时,它的current属性将只包含DOM元素的默认值,这是因为在元素构造函数的执行过程中DOM元素尚未被创建。
uReducer
使用uReducer来管理组件的状态,它类似于Redux中的reducer函数。
姜的作用和功效
uReducer接收两个参数,第一个参数是纯净的Reducer函数,第二个参数是State的初始值。
陌上柔桑破嫩芽 1.通常情况下,uState是更好的选择。
2.可以使用uReducer来管理单个state属性以及复杂的state对象。