bem / bem-react

A set of tools for developing user interfaces using the BEM methodology in React
http://bem.github.io/bem-react
Other
440 stars 64 forks source link

@bem-react/di: re-render all components inside withRegistry #551

Closed yarastqt closed 4 years ago

yarastqt commented 4 years ago

Проблема

На каждом рендере мы создаем вновь реестры, из-за чего все вложенные компоненты рендерятся по новой (этот поинт описан в докуменетации реакта).

https://github.com/bem/bem-react/blob/4723e3d7175dc1b6d91743682bd2c1774e33475f/packages/di/di.tsx#L27-L43

Пример — https://codepen.io/sartem/pen/wvaNjpO

Решение

Можно обернуть RegistryResolver в memo, либо советуют в документации, хранить значения контекста в локальном стейте компонента.