我在正在使用的項目中使用reactjs和flux架構。對於如何正確地將嵌套數據分解到商店以及爲什麼我應該將數據分成多個商店,我感到有點困惑。爲什麼在助焊劑應用架構中每個實體使用一個商店?
要解釋這個問題,我會用這個例子:
想象一下,你有項目的Todo應用。每個項目都有任務,每個任務都可以有筆記。
該應用程序使用REST API來獲取數據,返回以下響應:
{
projects: [
{
id: 1,
name: "Action Required",
tasks: [
{
id: 1,
name: "Go grocery shopping",
notes: [
{
id: 1,
name: "Check shop 1"
},
{
id: 2,
name: "Also check shop 2"
}
]
}
]
},
]
}
假想應用程序的界面顯示在左邊的項目列表,當你選擇一個項目,該項目被激活其任務顯示在右側。當你點擊一個任務時,你可以在彈出窗口中看到它的註釋。
我會做的是使用1單店,「項目店」。一個動作完成對服務器的請求,獲取數據並指示商店填充新數據。商店內部保存這個實體樹(項目 - >任務 - >註釋)。
爲了能夠根據選擇哪個項目來顯示和隱藏任務,我還會在商店中保存一個變量「activeProjectId」。基於該視圖可以獲得活動項目,其任務並呈現它們。
問題解決。
但是:在網上搜索了一下,看看這是否是一個好的解決方案後,我看到很多人聲稱你應該爲每個實體使用一個單獨的商店。
這將意味着: 一個ProjectStore,TaskStore和NoteStore。爲了能夠管理關聯,我可能還需要一個「TasksByProjectStore」和一個「NotesByTaskStore」。
有人可以解釋爲什麼這會更好嗎?我看到的唯一的事情是管理商店和數據流的開銷很大。
我意識到今天我從來沒有評論過你的答案。謝謝,我最終使用了一家商店,因爲這個應用程序並不複雜。 – geoffreydv
非常感謝。別客氣。 – wintvelt