假设我正在建立一个在线流媒体网站
路线/艺术家/姓名:(显示艺术家专辑的列表) 现状:
{
artist: 'Eminem',
albums: [{name: 'MMLP', songs: [listofsongids]}, {name: 'Relapse', songs: [...]}]
}
路线/艺术家/姓名/专辑/ albumid :(显示专辑歌曲列表) 现状:
{
artist: 'Eminem',
albums: [{name: 'MMLP', songs: [listofsongids]}, {name: 'Relapse', songs: [...]}],
songs: {song1: {lyrics: '...', ...}, song2: {...}}
}
如果我立即切换路线去访问另一张专辑,我应该更换 具有新列表的州的歌曲属性或只是添加到它并检索 当前专辑歌曲列表ids的相关内容?
在github上,丹·阿布拉莫夫建议永远不要在路线变化时清空状态: https://github.com/reactjs/redux/issues/1235
我很好奇你们将如何处理这个问题?
答案 0 :(得分:2)
这将是一个难以接受答案的问题,因为你会发现人们会有任何一种偏好,最后,没有一个正确的答案。这取决于您的应用程序,它使用的数据以及您的要求,但无论如何我都会给您我的意见。
假设你有id并且你可以使用songs
作为对象键轻松查找id
,并且很少有机会(我假设)歌曲数据将在加载之间发生变化,I我们不会担心将其清空,只需添加新歌即可。
这样可以更快地切换回以前加载的相册,这对用户来说更好。
如果您在收集增长时特别担心查看歌曲的效果,可以使用reselect删除不必要的查找。
事实上,normalized you can get the data越多,从我所处的状态中移除的数据就越少。您可以保留用户已加载的每个album
,无论artist
如何,甚至保留每个artist
,只需更改商店中selectedArtist
和selectedAlbum
的值}。
这也可以为您提供有关加载数据的更多选项。例如,如果用户将鼠标悬停在艺术家上3秒钟,或者在/artist/name
路线被击中后立即开始在后台加载歌曲,则可以在后台加载艺术家的所有专辑。