У меня есть сложный объект heme, который содержит несколько вложенных объектов и на основе этих переменных я создаю новый объект стиля в компонентах реагирования при каждом повторном отображении. По сути, этот сгенерированный стиль не должен меняться во время выполнения. Мне нужно иметь доступ к теме во время ее первого создания, чтобы я не мог переместить ее за пределы компонента и использовать жестко закодированные переменные темы. Он должен быть создан во время выполнения (я не нашел другого пути).
Мне не нравится, когда объект создается при каждом повторном рендеринге, поэтому я хотел бы сделать это только один раз и повторно. -создавать только если значения темы были изменены. Записки Loda sh не помогли, так что я хотел бы использовать isEqual , чтобы проверить, была ли изменена тема, и заново создать объект стиля.
Но я не уверен если isEqual будет лучше в случае ресурсов, а не просто создания нового объекта из-за глубокого сравнения объектов , и может пройти некоторое время, пока алгоритм пересекает целые объекты и сравнивает каждую их часть , Не правда ли?
Каким образом лучше с точки зрения производительности?
например Тема:
theme: {
color: 'black',
bg : { color: 'yellow' }
... so on
}
const styleCreator = (theme) => {
color: theme.bg.color
}
// COMPONENT
const MyComponent = (props) => {
// Here I want to save the old theme somewhere
// and compare it with the new one by isEqual
// and only if they are different - create a new style
const style = styleCreator(props.theme)
return <h1 style={style} ></h1>
}