React useEffect 显示 2 次组件安装
React useeffect shows mounting of component in 2 times
我有一个名为“Home”的组件,我在其中有一个 useEffect,它有一个 console.log(“已安装 Home 组件”)。我只是使用了一个常见的 useEffect 钩子。但是当我最初呈现页面时,我得到控制台日志 2 次,而不是在组件的初始安装中显示它。谁能告诉我我的代码发生了什么。代码如下:
import React, { useEffect } from 'react';
const Home = () => {
useEffect(()=>{
console.log("Home component mounted")
})
return (
<div className="container">
<h1 className="h1">Home Page</h1>
</div>
)};
export default Home;
发生这种情况是因为在您的应用程序中处于严格模式。转到 index.js 并注释严格模式标签。你会发现一个单一的渲染。
发生这种情况是 React.StrictMode 的一个特意功能。它只发生在开发模式中,应该有助于发现渲染阶段的意外副作用。
或者你可以尝试使用这个钩子:useLayoutEffect
import React, { useLayoutEffect } from "react";
const Home = () => {
useLayoutEffect(() => {
console.log("Home component mounted");
}, []);
return (
<div className="container">
<h1 className="h1">Home Page</h1>
</div>
);
};
export default Home;
是因为React.StrictMode
您不必担心 - 只是 StrictMode 会运行您的效果代码两次(仅在开发期间,不必担心生产)以便能够捕获错误和内存泄漏等
阅读更多:https://reactjs.org/docs/strict-mode.html
Screenshot here
useEffect() 相当于 componentDidMount() 和 componentDidUpdate()。这意味着当渲染你的组件时,useEffect() 将被调用两次。如果你只想调用 useEffect() 一次,你只需为它添加第二个参数。会变成这样。
useEffect(()=>{
console.log("Home component mounted")},[])
希望对你有所帮助!
我有一个名为“Home”的组件,我在其中有一个 useEffect,它有一个 console.log(“已安装 Home 组件”)。我只是使用了一个常见的 useEffect 钩子。但是当我最初呈现页面时,我得到控制台日志 2 次,而不是在组件的初始安装中显示它。谁能告诉我我的代码发生了什么。代码如下:
import React, { useEffect } from 'react';
const Home = () => {
useEffect(()=>{
console.log("Home component mounted")
})
return (
<div className="container">
<h1 className="h1">Home Page</h1>
</div>
)};
export default Home;
发生这种情况是因为在您的应用程序中处于严格模式。转到 index.js 并注释严格模式标签。你会发现一个单一的渲染。
发生这种情况是 React.StrictMode 的一个特意功能。它只发生在开发模式中,应该有助于发现渲染阶段的意外副作用。
或者你可以尝试使用这个钩子:useLayoutEffect
import React, { useLayoutEffect } from "react";
const Home = () => {
useLayoutEffect(() => {
console.log("Home component mounted");
}, []);
return (
<div className="container">
<h1 className="h1">Home Page</h1>
</div>
);
};
export default Home;
是因为React.StrictMode
您不必担心 - 只是 StrictMode 会运行您的效果代码两次(仅在开发期间,不必担心生产)以便能够捕获错误和内存泄漏等
阅读更多:https://reactjs.org/docs/strict-mode.html Screenshot here
useEffect() 相当于 componentDidMount() 和 componentDidUpdate()。这意味着当渲染你的组件时,useEffect() 将被调用两次。如果你只想调用 useEffect() 一次,你只需为它添加第二个参数。会变成这样。
useEffect(()=>{
console.log("Home component mounted")},[])
希望对你有所帮助!