Утечки памяти в Reactjs - встроенные функции и связанные функции карри - PullRequest
0 голосов
/ 05 мая 2018

Мы с коллегой обсуждали встроенные функции в вызове рендеринга, приводящие к утечкам памяти. Я предложил связать карри-функцию, но он утверждал, что это даст тот же эффект. Это правда? Вызывает ли каррирование утечки памяти из-за создания новой функции при каждом вызове рендеринга?

Есть ли лучший способ использовать карри, который не приводит к утечкам памяти?

Дополнительные похвалы для тех, кто предоставляет хорошие материалы для чтения по этой теме.

Простой пример, демонстрирующий два рассматриваемых подхода.

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>
        );
    }
}

1 Ответ

0 голосов
/ 07 мая 2018

Я обнаружил Обсуждение реакции о "утечках памяти" по вопросу выше.

Оказывается, они не утечки памяти как таковые. Дополнительные обработчики событий создаются в DEV , чтобы в конечном итоге собирал мусор. Таким образом, в dev работает больше GC, но нет утечек памяти, которые приведут к остановке вашего приложения.

Итак, это обсуждение было спорным. Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...