Миграция с неизменяемого на Immer, отсутствует object.filter()

#react-native #immutable.js #immer.js

#react-native #immutable.js #immer.js

Вопрос:

Я изучаю, сколько работы потребовалось бы для переноса моего приложения React-Native с Immutable.js к Иммеру. Возникает много проблем, но я буду решать их одну за другой здесь, в SO.

Проблема №1: object.filter()

Неизменяемый.Карта может быть повторена точно так же, как массив с картой и фильтром. Обычные объекты JS не могут. Вот один из способов решить эту проблему, но мне интересно, есть ли лучшие способы? Является ли это производительным?

Результат этого будет сохранен в памяти с помощью функции ReSelect. У всех моих элементов есть свойство «id», которое будет таким же, как у ключа.

 const myCollection = {
  1: {id:1, name: 'abc'}
  2: {id:2, name: 'def'}
}

const filteredCollection = Object.fromEntries(
  Object.entry(myCollection)
    .filter(item => item.someValue === 'filter-criteria')
    .map(item => [item.id, item]
)
 

Комментарии:

1. Я просто делаю тест с несколькими тысячами запусков. Но если это записано, это не должно быть проблемой. В некоторых случаях собственные карты являются отличной заменой, если вы уверены, что никто не изменяет ваши данные. Кстати immutable.js имеет свежую команду технического обслуживания, работающую над версией 4.0, если «не обслуживаемый» является движущим фактором расследования 😉