2016-07-09 2 views
2

Может ли реакция-редукция по-прежнему использовать mustComponentUpdate, если я использую Immutable.js? Метод connect() использует hasowEqual в shouldComponentUpdate(), но из документов Immutable.js я вижу, что мы должны использовать собственный метод Equat() для проверки равенства, а не оператор === (который используется в малом секторе)Immutablejs и shouldComponentUpdate

Рассмотрим это:

const map1 = Immutable.Map({a:1, b:2, c:3}); 
const map2 = Immutable.Map({a:1, b:2, c:3}); 

map1 === map2 // returns false 
map1.equals(map2) // returns true 

ответ

3

весь смысл использования immutable.js, чтобы сохранить ссылку, когда основной объект фактически не меняется. shallowEqual выполняет быструю проверку равенства между свойством, это огромный коэффициент усиления по сравнению с immutable.equals.

Пример:

let state = Immutable.Map({a: 1, b:2, c:3)} 

let state2 = state.set('a', 1) 

state === state2 //true because Immutable returns the same reference object since there is no changes 

В вашем примере вы явно выделить два различных Immutable.Map объектов так что два других объект в памяти и map1 === map2 возвращает false.

Смежные вопросы