Трудно понять наверняка, так как вы не добавили определение редуктора, но, как вы говорите, вы всегда устанавливаете selectedOptions в пустой массив, и я предполагаю, что вы имеете в виду в вашем редукторе действие по обновлению страницы, и когдаотправляется действие, вы изменяете его состояние следующим образом:
case Actions.Type.UPDATE_PAGE: {
return {
...state,
page: 'newValue',
selectedOptions: []
}
}
Redux использует неглубокую проверку на равенство, чтобы определить, изменилось ли состояние.Как говорит @Roomy, ["a"] === ["a"] возвращает false, поэтому Redux увидит вышеизложенное как изменение в state.selectedOptions при назначении новой ссылки.Использование DifferentUntilChanged () не имеет значения, поскольку он использует поверхностную проверку на равенство, поэтому, если вы передадите 2 массива с разными ссылками, это будет считаться изменением.
Если вам нужно только обновить страницу, обновите только свойство страницы и оставьте selectedOptions таким, как было:
case Actions.Type.UPDATE_PAGE: {
return {
...state,
page: 'newValue'
}
}
Таким образом, наблюдатель в вашем компоненте не будет уведомлен оизменить в selectedOptions.
Вы также можете использовать
case Actions.Type.UPDATE_PAGE: {
return {
...state,
page: 'newValue',
selectedOptions: state.selectedOptions
}
}
, потому что в этом случае selectedOptions все равно будет указывать на ту же ссылку.Это бессмысленно, но помогает объяснить суть.