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