shallowCompare не работает с неизменяемым js

#javascript #reactjs

#javascript #reactjs

Вопрос:

Я использую неизменяемый js в своем приложении react! В рамках оптимизации я попытался использовать shallowCompare в shouldComponentUpdate, и именно тогда я обнаружил, что shallowCompare возвращает true для неизмененного состояния и реквизитов! У меня есть путь и ключ модуля в моих реквизитах, которые являются неизменяемыми объектами (список и карта соответственно! ) Я не уверен, делаю ли я что-то неправильно или shallowCompare не поддерживает неизменяемый js, ребята, вы можете мне помочь?

Ответ №1:

В большинстве случаев shallowCompare отлично работает с неизменяемыми объектами.

Если вам нужна специальная поддержка для Immutable.is (), вы можете использовать shallowEqualImmutable. Он лучше понимает неизменяемые коллекции, поскольку считает списки с одинаковыми значениями одинаковыми.

 import React from 'react';
import { shallowEqualImmutable } from 'react-immutable-render-mixin';
class Test extends React.Component {
  shouldComponentUpdate(nextProps, nextState) {
    return !shallowEqualImmutable(this.props, nextProps) ||
           !shallowEqualImmutable(this.state, nextState);  
  }

  render() {
    return <div></div>;
  }
}