#javascript #reactjs #memoization
#язык JavaScript #реагирует на #запоминание
Вопрос:
у меня есть компонент react, который берет массив сложных объектов и выполняет с ними некоторые дорогостоящие вычисления.
Я хочу использовать React.memo, чтобы избежать повторного рендеринга, если массивы не изменились.
глубокое сравнение может быть дорогостоящим.
я придумал способ проверить, изменился ли массив, и мне интересно, почему я не могу найти никаких примеров людей, использующих этот метод, так как это кажется таким простым решением.
возможно, я упускаю причину, по которой мне не следует использовать этот метод?
является ли это широко используемой техникой?
я знаю, что могу JSON.stringify объекты, а затем сравнить их, разве это не потенциально дорого, если объекты большие?
я хочу изменять поле уникального идентификатора объекта в любое время, когда изменяется какое-либо значение в объекте
напр.
const arrayOfLargeObjects = [obj1,obj2,obj3,.....and so on] if obj1 = {letter: a, moreNestedStuff: {blah blah},memoizationid: '1'}//id is longer in actual implementation changes to obj1 = {letter: b, moreNestedStuff: {blah blah},memoizationid: '2'} //this is all done imutabily details left out for brevity const stringify = (obj)=gt;obj.map(el.memoizationid).join('') const comparisonFunction = (a,b)=gt;stringify(a)===stringify(b) lt;MyComponent myArray={arrayOfLargeObjects}/gt; React.memo(MyComponent, comparisonFunction);