useEffect的返回函数在组件挂载时运行吗?

Mig*_*GEQ 5 reactjs use-effect

这是我的代码

import { useEffect } from "react";
import { Link } from "react-router-dom";

export const PageOne = () => {

    useEffect(() => {
      return () => {console.log("PageOne")}
    }, []);

    return (
        <>
            <h1>PageOne</h1>
            <Link to="/two">Page two</Link>
        </>
    );
}
Run Code Online (Sandbox Code Playgroud)

这是我访问 PageOne 时在控制台中看到的内容

PageOne
Run Code Online (Sandbox Code Playgroud)

这是当我从 PageOne 导航到 PageTwo 时在控制台中打印的内容(PageOne 和 PageTwo 具有相同的结构)

PageOne
PageTwo 
Run Code Online (Sandbox Code Playgroud)

所以我认为 useEffect 中定义的返回函数在组件安装和卸载时运行。我在这个项目中使用了react-router-dom和Vite。

这是正常的吗?并且,是否存在一种仅在组件被卸载时才运行副作用函数的方法?

抱歉,如果我犯了一些错误。我是一名新开发人员,也是一名英语学生。

Sec*_*per 3

它的发生是 React.StrictMode 的一个有意的特性。它仅发生在开发模式中,并且应该有助于在渲染阶段发现意外的副作用。

\n

如果你看到文档

\n
\n

严格模式可以 \xe2\x80\x99t 自动为您检测副作用,但它\n可以通过使副作用更具确定性来帮助您发现它们。\n这是通过有意两次调用以下函数来完成的\n...

\n
\n