Я не совсем понимаю вашу проблему. Если вы добавите новый предмет, реквизит изменится, поэтому Сетка должна обновиться автоматически (спасибо за магию React). Больше не нужно звонить grid.clearCache()
.
Вот мой простой дизайн редуктора для вашей задачи.
const preState = {
items: {
1: {
id: 1,
itemName: '1'
},
2: {
id: 2,
itemName: '2'
}
},
order: [1, 2],
selectedItem: 1
}
export default (state = preState, action) => {
switch (action.type) {
case 'SELECT_ITEM':
return {
...state,
selectedItem: action.itemId
}
case 'ADD_NEW_ITEM':
return {
...state,
items: {
...state.items,
[action.item.id]: action.item
},
order: [...state.order, action.item.id],
selectedItem: action.item.id
}
default:
return state;
}
}
А ваши Grid Component
должны читать items
и selectedItem
(order
, если вам нужно отсортировать предметы) из магазина притока.