ডক্স অনুসারে:
componentDidUpdate()আপডেট হওয়ার সাথে সাথেই অনুরোধ করা হয়। এই পদ্ধতিটি প্রাথমিক রেন্ডার জন্য ডাকা হয় না।
আমরা useEffect()অনুকরণ করতে নতুন হুক ব্যবহার করতে পারি componentDidUpdate(), তবে মনে useEffect()হয় প্রতিটি রেন্ডারের পরে এমনকি প্রথমবারের মতো এটি চলছে। আমি কীভাবে এটি প্রাথমিক রেন্ডারে না চালাতে পারি?
আপনি নীচের উদাহরণে দেখতে পাচ্ছেন, componentDidUpdateFunctionপ্রাথমিক রেন্ডার componentDidUpdateClassচলাকালীন মুদ্রিত হয় তবে প্রাথমিক রেন্ডার সময় মুদ্রিত হয়নি।
function ComponentDidUpdateFunction() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
console.log("componentDidUpdateFunction");
});
return (
<div>
<p>componentDidUpdateFunction: {count} times</p>
<button
onClick={() => {
setCount(count + 1);
}}
>
Click Me
</button>
</div>
);
}
class ComponentDidUpdateClass extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0,
};
}
componentDidUpdate() {
console.log("componentDidUpdateClass");
}
render() {
return (
<div>
<p>componentDidUpdateClass: {this.state.count} times</p>
<button
onClick={() => {
this.setState({ count: this.state.count + 1 });
}}
>
Click Me
</button>
</div>
);
}
}
ReactDOM.render(
<div>
<ComponentDidUpdateFunction />
<ComponentDidUpdateClass />
</div>,
document.querySelector("#app")
);
<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.development.js"></script>
<div id="app"></div>
count?