我有一个父组件,在其中我包含了一个带有道具的子组件。但是当父组件中的任何状态发生变化(与子组件无关)时,子组件将重新渲染。我不希望在每次状态更改时都重新渲染。我们可以停下来吗?
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);
孩子.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
这个。在这里阅读更多。
这将防止在道具没有改变时重新渲染。
而不是export default Child;
用export default React.memo(Child);
你的child.js
。
import React from "react";
function Child(props) {
console.log("child component");
return <div className="App">child Page</div>;
}
export default React.memo(Child);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句