我只是无法掌握我猜的核心概念。
我有一个包含联系人列表的页面。但是用户可以使用URL中的contactID访问该页面,在这种情况下,我应该打开一个带有联系信息的弹出窗口。那么,我在做什么:
我的store
看起来像是:
{
isRequested: boolean, // is initial loading done
isLoading: boolean, // is currently loading,
contacts: {[ key: number ]: IContact}
// where key is contact ID and IContact is generic a model
}
打开页面并开始加载联系人列表。 在没有等待联系人的情况下,我打开了弹出窗口。
那么,我应该如何处理这种情况呢?我想到的唯一一件事就是如果商店里不存在虚拟联系人。类似的东西:
{
...,
contacts: {
1: {
isRequested: false,
isLoading: true,
isCorrupted: false // in case of bad ID
}
}
}
在弹出窗口中订阅状态更改,等待此联系人isRequested
更改。
当所有联系人加载后 - 添加所有联系人而不加入此联系人,或合并它们。
这是正确的方法,还是存在更好的解决方案?
答案 0 :(得分:0)
我会保持联系人为空,只需显示加载屏幕,直到加载完整列表。
所以你的州看起来像
{
isLoading: boolean, // is currently loading,
contacts: {[ key: number ]: IContact}
}
和初始状态
{
isLoading: false,
contacts: {}
}
在您看来:
componentWillMount
),加载联系人列表并将isLoading
设置为true。isLoading
为真时,显示加载屏幕。