React

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > React > useEffect中return函数作用和执行时机

useEffect中return函数的作用和执行时机解读

作者:淘淘是只狗

这篇文章主要介绍了useEffect中return函数的作用和执行时机,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

useEffect中return函数作用和执行时机

官网的代码

import React, { useState, useEffect } from 'react';

function FriendStatus(props) {
  const [isOnline, setIsOnline] = useState(null);

  useEffect(() => {
    function handleStatusChange(status) {
      setIsOnline(status.isOnline);
    }
    ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
    // Specify how to clean up after this effect:
    return function cleanup() {
      ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
    };
  });

  if (isOnline === null) {
    return 'Loading...';
  }
  return isOnline ? 'Online' : 'Offline';
}

这是effect可选的清除机制

每个 effect 都可以返回一个清除函数。

React会在组件卸载的时候执行清除操作

effect 在每次渲染的时候都会执行。

React 会在执行当前 effect 之前对上一个 effect 进行清除。

import { useEffect, useState } from 'react';

const Example = () => {
  const [count, setCount] = useState(0);

  useEffect(() => {
    console.log("哈哈哈,useEffect 又执行了");
    return () => {
      console.log("看到我就知道执行了清除机制(~ ̄▽ ̄)~");
    };
  }, [count]);

  return (
    <div>
      <p>那啥,你点了我 {count} 次 ⏲️⏲️⏲️⏲️</p>
      {console.log("这是 dom 节点渲染了,小样╭(╯^╰)╮")}
      <button
        onClick={() => {
          setCount(count + 1);
        }}
      >
        你觉得你点击我之后会发生什么⛏️⛏️⛏️
      </button>
    </div>
  );
};

function App() {
  return (
    <div className="App">
      <Example />
    </div>
  );
}

export default App;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文