我一直在想如何命名反应钩。例如,useEffect,它的名称是如何表示类似于componentDidUpdate或componentDidMount的东西的?我们在加载组件之后所做的这些操作并不是副作用,而是主要应用程序流的一部分,那么为什么这些操作被称为副作用呢?
发布于 2020-01-19 21:02:28
为什么用这种方式命名( useXXX )?
从钩子文档,使用自定义钩
--我必须给我的自定义钩子命名为“use”吗?--请这样做。这个会议非常重要。没有它,我们就无法自动检查是否违反了Hooks的规则,因为我们无法判断某个函数是否包含对Hooks的调用。
use
前缀并没有指示特定的功能,只是它是作为命名约定建立的react钩子。这类似于使用withXXXX
前缀的特殊命名约定。
为什么这些叫副作用?
useEffect
钩子用于在其依赖数组中的值被更新时满足特定条件时触发效果。它是基于类的组件的生命周期函数的同义词,两个最常见的函数是componentDidMount
和componentDidUpdate
。
react状态模型被认为是使用纯函数来更新状态,即接受输入的setState
/useState
/etc不对它们进行变异,而是返回新的对象,而其他函数(如useEffect
)不直接修改和返回对象,但可以发出其他效果,例如调用异步API端点等。
一个超级简单的使用数组的例子
array::map
是一个纯函数,它在数组上迭代,将每个元素映射到一个新值,并返回一个新数组。没有副作用。( redux减速器类似于返回下一个状态值)array::forEach
是一个纯函数,它在数组上迭代,对每个元素调用一个副作用回调,并返回undefined
。副作用。(调用API,通常没有返回值,但在其他地方触发更新)发布于 2020-01-19 12:32:37
在函数式编程范式中,如果函数做了一些改变其环境的事情,那么它就叫做sideEffect。
在react中,组件的工作就是给出一个ui应该是什么样子的视图。但为此,我们可能需要一些其他数据,而不仅仅是道具。通过网络请求。当我们不只是返回视图(比如附加事件、侦听器等)时,我们就会做其他事情,这些都是sideEffects。
https://stackoverflow.com/questions/59809947
复制相似问题