Как сравнить вложенный массив объекта с помощью реагировать shouldComponentUpdate () метод жизненного цикла - PullRequest
1 голос
/ 23 сентября 2019

Я ищу лучший подход, в котором я могу сравнивать свои текущие значения в состоянии / реквизитах с новыми значениями в состоянии / реквизитах при использовании shouldComponentUpdate

shouldComponentUpdate(nextProps, nextState)

Давайтерассмотрим пример, если у меня есть следующие данные в моем состоянии

[
        {
          title: "Hello",
          id: 1,
          isUpdated: false,
          property: [
            {
              name: "property 1",
              area: "area 1",
              inspection: [
                {
                  isNew: true,
                  isSold: false,
                  isLicenseExpired: false
                }
              ]
            },
            {
              name: "property 2",
              area: "area 2",
              inspection: [
                {
                  isNew: false,
                  isSold: false,
                  isLicenseExpired: true
                }
              ]
            }
          ]
        },
        {
          title: "World",
          id: 2,
          isUpdated: false,
          property: [
            {
              name: "property 1",
              area: "area 1",
              inspection: [
                {
                  isNew: false,
                  isSold: false,
                  isLicenseExpired: true
                }
              ]
            },
            {
              name: "property 2",
              area: "area 2",
              inspection: [
                {
                  isNew: false,
                  isSold: false,
                  isLicenseExpired: true
                }
              ]
            }
          ]
        }
      ]

Теперь, когда я снова обновляю состояние с теми же данными, я не могу сравнить его вручную с предыдущими и текущими реквизитами / состоянием, потому что если я сравниваю их как nextProps.data !== this.props.data это даст мой неверный результат, так как это только поверхностное сравнение.

Я также знаю, что могу использовать библиотеку lodash для глубокого сравнения значений, но я хотел знать лучшееспособ сравнения вложенного массива объекта в shouldComponentUpdate()

Вот живой пример - https://codesandbox.io/s/crazy-perlman-f3e1k?fontsize=14 На случай, если вам интересно увидеть мой код и проблему.

Спасибоза ваше время.

1 Ответ

1 голос
/ 23 сентября 2019

В этой теме возможно слишком обширный ответ на ваш вопрос.JSON.stringify - один из способов, но медленный.Лодаш, подчеркиваю и работа.Или вы можете использовать одну из функций, предоставленных респондентами в цепочке.

Как сравнивать массивы в JavaScript?

...