挂钩
在值发生更改或发生其他事件的框架中,挂钩是一种常见模式。 它们会集中注入你自己的代码,以便在状态更改或应用程序生命周期的其他阶段运行。
效果挂钩
在本单元中,我们将重点介绍效果挂钩。 只要设置了状态值,就会引发此挂钩。 如果设置了初始值和所有后续的更新,则会引发此挂钩。
利用效果挂钩,你可以运行代码来响应值的设置。 运行的代码可能会产生负面影响,因此你可以根据需要更新值。
何时使用效果挂钩
只要你需要集中代码以响应状态更改,就可以使用效果挂钩。 假设有一个包含多个值的复杂窗体。 通常应禁用“提交”按钮,直到需要发送到服务器的数据处于有效状态为止。 假设你在数据中有针对已发生更改的各个值的事件。 用户在应用程序中选择国家/地区后,你需要从服务器中检索省/自治区/直辖市列表。
不建议让每个事件侦听器都检查状态,以查看数据是否准备好发送到服务器。 这种设置效率低下。 相反,你可以使用效果挂钩。 效果挂钩可以创建一个用于查看数据的函数。 如果数据处于有效状态,则可以启用“提交”按钮。
useEffect
若要为效果挂钩注册侦听器,请使用 useEffect
。 useEffect
接受无参数函数,用于在状态更改时运行。
useEffect(() => {
// code goes here
});
默认情况下,只要任何有状态对象的状态发生更改,useEffect
就会运行。 你可以提供一个依赖项,以便仅对一组特定对象启用挂钩。
useEffect(() => {
// code goes here
}, [ someStatefulObject ]);