React
React
一.Effect
1. 概念
在 React 中,Effect 指的是在组件渲染过程之外发生的一切事情。也就是说,任何 React 不直接处理的与渲染 UI 相关的操作。
常见的例子包括获取数据、更新浏览器标签页的标题、读取或写入浏览器的本地存储、获取用户的位置等。这些操作与外部世界进行交互,被称为副作用。
2.使用方法
首先需要导入
1 | |
然后像函数一样使用它
1 | |
useEffect内的逻辑/函数,在组件渲染后运行,而可选的dependencies参数控制这个useEffect何时运行。
dependencies
注意dependencies可以是一个包含”响应式值”(state, props, functions, variables, and so on)的数组,也可以是一个空数组,或者完全省略。下面是这些选项如何控制useEffect的行为:
- 如果
dependencies是一个包含一个或多个响应式值的数组,那么该effect将在这些值发生变化时运行。
1 | |
- 如果
dependencies是一个空数组,useEffect仅在组件首次渲染时运行一次。
1 | |
- 如果你省略
dependencies,useEffect会在每次组件渲染或更新时运行。
1 | |
二.创建自定义Hook
React 提供了许多内置的钩子,使你能够在项目中实现不同的功能。这些包括 useState , useEffect , useContext ,等等。
自定义钩子并不像它们看起来那么复杂。它们只是可重用的函数,让你能够在多个组件之间共享逻辑。
- 需要添加一个内置钩子无法实现的功能
- 可重用性
- 将任何使用它们的组件中的逻辑提取出来
like data fetching, state management, toggling, side effects like checking for the online or offline status of users, and so on.
- 在任何组件中导入这个钩子,这样你就可以专注于这些组件中的渲染和展示。
这意味着更少的重复和复制,当你需要进行任何更新时,修改的地点也会更少。
接下来,创建一个 useDebounce 函数,它接受 value 和 delay 作为参数。 value 是你想要等待的资源, delay 是你希望等待的时间段。由于你希望等待一段时间, setTimeout 和 clearTimeout 函数会很有用:
1 | |
React
https://hainoir.github.io/posts/d8a440d1.html