https://dmitripavlutin.com/use-react-memo-wisely/
مقاله خوبی است که کاربرد React.memo را برای افزایش سرعت renderکردن با یک مثال ساده توضیح داده است.
مقاله خوبی است که کاربرد React.memo را برای افزایش سرعت renderکردن با یک مثال ساده توضیح داده است.
Dmitri Pavlutin Blog
Use React.memo() wisely
React.memo() increases the performance of functional components by preventing useless renderings. But such performance tweaks must be applied wisely.
در ادامه با یک مثال ساده این کار را با هم مرور می کنیم:
ابتدا یک پروژه react ایجاد کنید (به کمک دستورات زیر)
npx create-react-app my-app
cd my-app
npm start
ابتدا یک پروژه react ایجاد کنید (به کمک دستورات زیر)
npx create-react-app my-app
cd my-app
npm start
محتوای فایل را پاک کرده و برنامه زیر را جایگزین کنید
```
import React, { Component } from "react";
import ReactDOM from "react-dom";
const ScotchyComponent = props => <div>{props.message}</div>;
// create a version that only renders on prop changes
const MemoizedScotchyComponent = React.memo(ScotchyComponent);
// counter component
// we need a second moving component to trigger a render on our app
const Counter = props => <strong>{props.count}</strong>;
/
* Main App component
*/
class App extends Component {
state = { count: 0, value: "my message goes here" };
handleChange = e => this.setState({ value: e.target.value });
handleClick = () => this.setState(({ count }) => ({ count: count + 1 }));
render() {
const { count, value } = this.state;
return (
<div className="hero is-fullheight has-text-centered">
<div className="hero-body">
<div className="container">
<h1 className="title">
React.memo(): <Counter count={count} />
</h1>
<button
type="button"
className="button is-warning"
onClick={this.handleClick}
>
Increase Count
</button>
{/* two columns to show components */}
<input
type="text"
className="input"
value={value}
onChange={this.handleChange}
style={{ marginTop: "30px", marginBottom: "30px" }}
/>
{/* two columns to show components */}
<div className="columns is-mobile">
<div className="column">
<ScotchyComponent message={value} />
</div>
<div className="column">
<MemoizedScotchyComponent message={value} />
</div>
</div>
</div>
</div>
</div>
);
}
}
export default App;
```
```
import React, { Component } from "react";
import ReactDOM from "react-dom";
const ScotchyComponent = props => <div>{props.message}</div>;
// create a version that only renders on prop changes
const MemoizedScotchyComponent = React.memo(ScotchyComponent);
// counter component
// we need a second moving component to trigger a render on our app
const Counter = props => <strong>{props.count}</strong>;
/
* Main App component
*/
class App extends Component {
state = { count: 0, value: "my message goes here" };
handleChange = e => this.setState({ value: e.target.value });
handleClick = () => this.setState(({ count }) => ({ count: count + 1 }));
render() {
const { count, value } = this.state;
return (
<div className="hero is-fullheight has-text-centered">
<div className="hero-body">
<div className="container">
<h1 className="title">
React.memo(): <Counter count={count} />
</h1>
<button
type="button"
className="button is-warning"
onClick={this.handleClick}
>
Increase Count
</button>
{/* two columns to show components */}
<input
type="text"
className="input"
value={value}
onChange={this.handleChange}
style={{ marginTop: "30px", marginBottom: "30px" }}
/>
{/* two columns to show components */}
<div className="columns is-mobile">
<div className="column">
<ScotchyComponent message={value} />
</div>
<div className="column">
<MemoizedScotchyComponent message={value} />
</div>
</div>
</div>
</div>
</div>
);
}
}
export default App;
```
خوب تاثیر این ان است که وقتی بر روی دکمه کلیک می کنیم این کامپوننت memo شده render نمی شود (بهبود performance)
حالا یک بار دیگر profiler را راه اندازی می کنیم و بر روی دکنه increase کلیک می کنیم و نتیجه را مقایسه می کنیم
شرکت همراه مکانیک به دنبال cto است اگر متقاضی هستید و یا فردی را می شناسید لطفا معرفی کنید.
https://www.hamrah-mechanic.com
استک تکنولوژی آنها مایکروسافتی است
https://www.hamrah-mechanic.com
استک تکنولوژی آنها مایکروسافتی است
Hamrah-Mechanic
همراه مکانیک؛ مرجع تخصصی خرید، فروش و قیمت خودرو
اگر خریدار یا فروشنده خودرو هستید و نیاز به یک همراه مطمئن و با سابقه دارید، با خدمات زیر در کنار شما هستیم: خرید خودرو با ضمانت واقعی | فروش خودرو بدون دغدغه | کارشناسی تخصصی | تخمین قیمت واقعی و منصفانه