React Hooks -useeffect()
#javascript #初学者 #react #hooks

嘿,hoookerrrr! ð

今天,我们正在深入探索钩子的神奇世界 - 专门针对useEffect()钩子。因此,搭扣,让我们开始这次旅行吧! ð

等等,什么是useEffect()? ð

很棒的问题!如果您熟悉componentDidMountcomponentDidUpdatecomponentWillUnmount等类组件中的生命周期方法,则可以将useEffect()视为所有这些组合在一起。是的,你听到的是对的!一个钩子统治所有的钩子。 ð

但请坚持下去,这是真正的踢脚-useEffect()用于功能组件。现在很整洁,是吗? ð²

好吧,我很感兴趣。但是我为什么要使用它呢?

useEffect()感到兴奋,但不确定为什么要使用它?不用担心!让我为您分解:

  • 您知道何时必须在应用程序中做一些额外的事情,例如从服务器获取数据,更改屏幕上的某些内容或设置正在进行的过程?这就是我们所说的“副作用”,而useEffect()就像是用于处理这些功能的魔术工具。 ð§°

  • 记住,在类组件中,您可能必须在不同的生命周期方法中编写相同的代码? useEffect()可以通过允许将代码放在一个地方来帮助您避免这种重复性能。这就是整洁的生活! ð§§

  • 现在让我们谈谈我们的好朋友useState()。如果您喜欢useState()如何使您的代码更短,更可读性,那么您将因为相同的原因而爱useEffect()!它有助于使您的代码保持整洁,整洁和易于眼睛。 ð

感觉像是带有钩子的超级英雄吗?让我们探讨更多细节! ð

让我们与useEffect()动手。 ð§

要使用useEffect(),您需要使用一个函数(运行您的侧面效果)和一系列依赖项调用它。如果任何依赖性都改变了,效果将再次运行。

这是基本语法:

useEffect(() => {
    // Your side effect goes here.
}, [/* your dependencies go here */]);

示例

假设我们想从API获取用户的数据并显示它。使用useEffect(),这是一块小菜:

import { useEffect, useState } from 'react';

function UserProfile({ userId }) {
  const [user, setUser] = useState(null);

  useEffect(() => {
    fetch(`https://api.example.com/users/${userId}`)
      .then(response => response.json())
      .then(data => setUser(data));
  }, [userId]); // We're using userId as a dependency

  return (
    <div>
      {user ? (
        <>
          <h1>{user.name}</h1>
          <p>{user.description}</p>
        </>
      ) : (
        <p>Loading...</p>
      )}
    </div>
  );
}

export default UserProfile;

在此示例中,每当userId更改时,我们的效果将运行,获取新用户的数据并更新user状态。

useEffect()清理。 - §§

有时,您的效果可能会在组件卸下之前或在效果再次运行之前设置需要清理的东西。为此,您可以从效果中返回清理功能。

import { useEffect } from 'react';

function Timer() {
  useEffect(() => {
    const timeoutId = setTimeout(() => {
      console.log('One second has passed!');
    }, 1000);

    return () => {
      clearTimeout(timeoutId);
    };
  }, []);

  // ...
}

在这种情况下,如果Timer在超时完成之前卸下,则清理功能将运行并防止超时回调引起错误。

很酷,对吗? ð

有关useEffect()的更详细信息,您始终可以参考官方的React文档here

愉快的编码!

想和我一起参加博客之外的这次编码冒险吗?

1'M Phani Murari

让我们联系并保持学习进行ð

ðˆ Instagram-用于幕后,日常生活和更多技术技巧。

¼LinkedIn-用于专业见解,我的最新工作更新和网络机会。

期待在数字世界中与您会面! ð