У меня есть хранилище данных с редуктором и данными, доступными для хранения этих данных.Я пытаюсь загрузить некоторые данные в хранилище, когда компонент подключен, и удалить эти данные, когда компонент отключен.Но перед удалением я хочу убедиться, что эти данные не используются никаким другим подключенным компонентом.До сих пор у меня есть
Store:
{
data: {}
}
Моему компоненту нужен itemList, я отправляю действие LOAD_ITEMS, один эпик загружает itemList и помещает его в хранилище
{
data: { items: {someItems}}
}
Этот компонент имеет следующее подключение к хранилищу -
componentDidMount () {
if (!data.items) {
dipatch(LOAD_ITEMS)
}
}
componentWillUnmount() {
// Before doing this I want to make sure that these items are not
// used by any other mounted componeted.
dispatch(REMOVE_ITEMS_FROM_STORE);
}
mapStateToProps = () => ({
data: store.data
})
Один из способов, которым я пытался, состоял в том, чтобы сохранить количество всех подключенных компонентов, которые используют элементы из хранилища в хранилище с ключом activeComponents.Как и в случае с
{
data: {
items: {someItems}
activeComponents: 2 // count of mounted components which are
//using items from store
}
}
Таким образом, если есть два компонента, которым нужны элементы из хранилища, число активных компонентов будет равно 2, поэтому элементы будут удалены из хранилища, только если это число равно единице, а при других попытках удаления только активные компонентыколичество уменьшается на 1
Но это очень сложный подход, я полагаю, должен быть какой-то лучший и правильный способ сделать это.Есть мысли?