React响应式开发学习笔记 | 青训营

99 阅读4分钟

React学习

1.React的设计思路

响应式系统

监听事件,消息驱动

事件->执行既定的回调->状态变更->UI更新

组件化

  • 组件是组件的组合
  • 组件内拥有状态,外部不可见
  • 父组件可将状态传递给子组件
  • 组件要声明状态和UI的映射
  • 组件有props/state两种状态
  • “组件”可由其他组件组成

我认为组件化的宗旨在于我们可以将整个系统拆分成多个独立的,可以重用的组件,这些组件都被定义好了明确的功能和接口,我们可以通过组件化来达到功能的复用和可维护性的提升,我们可以只用专注组组件的优化和测试,从而降低了在开发时考虑整个系统的复杂度

状态归属问题

抽象每一个局部的状态来进行全局的响应

  • React为单项数据流:只能由父组件将状态传递给子组件
  • Dom更新

我认为状态归属问题我们可以首先确定哪些组件需要共享状态。如果多个组件需要访问和更新相同的状态,那么这些组件应该共享状态。然后我们也可以将状态定义在共享状态的最近的共同父组件中。这样,所有需要访问该状态的子组件都可以通过props接收到该状态。在父组件中定义一个回调函数,用于更新状态。将这个回调函数作为props传递给子组件。在子组件中,当需要更新状态时,调用父组件传递的回调函数。父组件中的回调函数将更新状态,并通过props将新的状态传递给所有子组件。

2.React(hooks)的写法

import React , { use State } from 'react'

function Example(){
    const [count,setCount] = useState(0);
    //定义一个新的状态,将会响应 count
    return(
        <div>
            <p> You Clicked {count} times </p>
            <button onClick={() => setCount(count + 1)}>Click me !</button>
        </div>
    );
}

useState

传入一个初始值,返回一个状态,set该状态的函数,用户可以通过该函数来实现状态的修改

其用于在函数组件中定义和管理状态。它返回一个数组,第一个值是当前状态的值,第二个值是更新状态的函数。

useEffect

传入一个函数,和一个数组,数组是状态的数组称作依赖项,该函数再mount是和依赖项被set时会执行

有“副作用”的函数要传入useEffect来执行。副作用代表除了单纯的计算之外,还要做其他的一些事情。比如网络请求,更新DOM,localStorage存储数据等 其用于在函数组件中执行副作用操作,例如订阅事件、发送网络请求等。它类似于类组件中的componentDidMount、componentDidUpdate和componentWillUnmount的合并。useEffect接受一个回调函数作为参数,并在每次组件渲染后执行该回调函数。

我认为Hooks的意义在于简化了函数组件的编写和管理状态的方式,使得函数组件能够具备类组件的功能。使用Hooks,可以避免类组件中繁琐的生命周期方法和this的使用。

3.React的实现

Virtual DOM(及时响应)

Virtual Dom是一种用于和真实DOM同步。而在JS内存中维护的一个对象,它具有和DOM类似的树状结构并和DOM可以一一的建立对应关系。

DOM本身是浏览器的组成部分,JS是通过DOMAPI来修改DOM的,但是Virtual DOM是JS内部维护的

7575ea9f72d4e7a8bd235f2cc1b3ea9.jpg

那么设计Diff算法就是最关键的用于实现rerender的步骤

不同类型的元素替换
同类型的DOM元素更新
同类型的组件元素递归

4.React状态管理库

核心思想在于:将状态抽离到UI外部进行统一管理

主要有redux,xstate,mobx,recoil等状态管理库

ab6bf2dcf51e2bbe3529283f5e71178.jpg

状态机

当前状态,收到外部事件,迁移到下一个状态

655d0f8679c707c7aa4eb4921aa747a.jpg

有限状态机:有限状态机是指状态的数量是有限的,可以精确地定义状态之间的转换规则。它通常由一个初始状态开始,根据输入事件执行一系列转换操作,最终到达接受状态或终止状态。

三个重要的组成部分:状态:包括起始状态、中间状态、接受状态、终止状态等;输入事件:触发状态转换的外部输入;转换规则:描述了在每个状态下,接受哪些输入事件并转换到哪个新状态。

无限状态机:无限状态机是指状态数量是无限的,通常用于描述具有无限可能性的系统,如操作系统的进程管理器。

应用级框架科普

  • NEXT.js
  • MODERN.js
  • Blitz

小结

在本次对React的初步学习中,对响应式前端开发有了很深入的了解,但是知识的深度还需要自己去继续学习实践来进行tan'suo