gpt4 book ai didi

javascript - 当 react js 中的任何状态发生变化时,如何停止重新渲染子组件?

转载 作者:行者123 更新时间:2023-11-29 18:39:32 25 4
gpt4 key购买 nike

我有一个父组件,在其中我包含了一个带有 Prop 的子组件。但是当父组件(与子组件无关)中的任何状态发生更改时,子组件都会重新渲染。我不想重新渲染在每次状态变化时。我们可以停下来吗?

import React, { useState } from "react";
import ReactDOM from "react-dom";
import Child from "./child";
import "./styles.css";

function App() {
const [any_state, setAnyState] = useState(false);

const handleClick = () => {
setAnyState(!any_state);
};
return (
<div className="App">
Parent Page ({any_state ? "true" : "false"})
<br />
<button onClick={handleClick}>Click me</button>
<Child data={"any data"} />
</div>
);
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

child .js

import React from "react";

function Child(props) {
console.log("child component");
return <div className="App">child Page</div>;
}

export default Child;

https://codesandbox.io/s/clever-oskar-fpxm3?fontsize=14

我不希望“子组件”在每次状态更改时都显示在控制台中。

最佳答案

你想为此使用 React.memo。阅读更多 here .

这将防止在 props 没有改变时重新渲染。

child.js 中使用 export default React.memo(Child); 而不是 export default Child;

import React from "react";

function Child(props) {
console.log("child component");
return <div className="App">child Page</div>;
}

export default React.memo(Child);

关于javascript - 当 react js 中的任何状态发生变化时,如何停止重新渲染子组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58219732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com