Мы с коллегой обсуждали встроенные функции в вызове рендеринга, приводящие к утечкам памяти. Я предложил связать карри-функцию, но он утверждал, что это даст тот же эффект. Это правда? Вызывает ли каррирование утечки памяти из-за создания новой функции при каждом вызове рендеринга?
Есть ли лучший способ использовать карри, который не приводит к утечкам памяти?
Дополнительные похвалы для тех, кто предоставляет хорошие материалы для чтения по этой теме.
Простой пример, демонстрирующий два рассматриваемых подхода.
export default class ParentComponent extends Component {
constructor(props) {
super(props);
this.state = {
memLeak: false,
};
this.curryExample = this.curryExample.bind(this);
}
curryExample(bool) {
return () => {
this.setState({memLeak: bool})
};
}
render() {
const {memLeak} = this.state;
return (
<div>
{/* inline func leads to memory leaks */}
<ChildComponent onClick={() => this.setState({memLeak: !memLeak})}/>
{/* but does a bound function to Parent scope do the same?? */}
<ChildComponent onClick={this.curryExample(!memLeak)}/>
</div>
);
}
}