我有一个带有减速器数据的redux存储,并使用可观察到的redux将其填充到存储中。我正在尝试在安装组件时加载存储中的某些数据,并在卸载组件时删除该数据。但是在删除之前,我想检查一下此数据是否已被任何其他已安装的组件使用。到目前为止,我只有这个
商店:
{
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
}
}
因此,如果有两个组件需要从存储中取出项目,则activeComponents的数量将为2,因此只有在此计数为1时,才会从存储中删除项目,在其他删除尝试中,仅activeComponents的数量减少1
但是这是非常复杂的方法,我想必须有一些更好和适当的方法来做到这一点。有什么想法吗?
答案 0 :(得分:0)
我认为您的想法是,存储activeComponents数量是一种正确的方法,但是您应该使用布尔值,这将使其更易于处理。
因此,基本上不必存储activeComponents: 3
,而只需执行isUsed: true / false