сравнивать различные массивы состояний в getDerivedStateFromProps - PullRequest
0 голосов
/ 09 октября 2018

Как сравнить состояния в массиве?Я не могу использовать !== или .length

static getDerivedStateFromProps(props, state) {
    if(props.languages !== statelanguages)) {
      return {
        languages: props.languages
      }
    }
    return null
  }

Я могу использовать isEqual от lodash, но разве это не излишне?

1 Ответ

0 голосов
/ 09 октября 2018

Это зависит от того, насколько тщательным должен быть ваш чек.Если вы хотите быть абсолютно уверены, что 2 массива полностью совпадают - что означает, что все их элементы совпадают - тогда простой проверки длины или ссылки будет недостаточно.Вам понадобится lodash.isEqual или что-то подобное.

Обратите внимание, что lodash.isEqual будет очень быстрым, если props.languages и statelanguages равны "эталонному", что означает, что если props.languages === statelanguages оценивается как true, то оноВернусь правда прямо сейчас.Если нет, то он продолжает проверку на проверку длины и проверку на глубокое равенство - последняя может стать дорогостоящей, если размеры вашего массива велики.

...