Я использую redux с реакцией и машинописным текстом для моего приложения. Я работаю со многими элементами, используемыми в разных местах моего приложения. Мое состояние выглядит следующим образом:Избегайте повторного рендеринга большого списка элементов с помощью реакции-сокращения
{
items: {42: {}, 53: {}, ... }, //A large dictionary of items
itemPage1: {
itemsId: [ 42, 34, 4 ],
...
},
itemPage2: { ...
},
...
}
Пользователь может изменить некоторые атрибуты items
диспетчерские некоторые действия. Когда это произойдет, мне нужно перерисовать компоненты, которые были изменены на каждой странице. Проблема в том, что мои вещи довольно большие, и я не могу позволить себе перерисовать их все при каждой небольшой модификации. Мне было интересно, как этот подход будет работать:
- У меня есть компонент
<ItemPage1>
кулака, который подключается к магазину, чтобы получить все из состояний, хранящихся в дереве подitemPage1
например, список предметов id:itemsId
. - Внутри
<ItemPage1>
я петля надitemsId
собственности для создания несколькихFilterItem
компонентов:itemsId.map(itemId => return <FilterItem id=itemId>);
Наконец каждый
Item
подключен с помощьюownProps
, чтобы получить правильную часть государства:const mapStateToItemProps = (state, ownProps) => { return { item: state.items[ownProps.id], } } const mapDispatchToItemProps = (dispatch, ownProps) => { return null; } const FilterItem = connect( mapStateToItemProps, mapDispatchToItemProps )(Item)
Может вы подтверждаете или опровергаете, что если я обновляю элемент id 42, то только этот элемент будет повторно отображен?
Возможно, это для вас http://stackoverflow.com/questions/38493521/whats-the-best-way-to-deal-with-a-normalized-response/38499471#38499471 –
Ваш комментарий стал актуальным, но вопрос состоял в том, что все элементы были переделаны или нет. – user3091275