React.memo большой массив вложенных объектов, предлагаемый способ эффективного сравнения с использованием идентификатора отслеживания изменений

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