我與這些userData
默認的AuthStore:MobX - 用戶配置不同的領域和空違約問題
@observable userData = {
username: null,
firstname: null,
lastname: null,
email: null
}
對象填充在登錄與各領域,看起來像這樣:
@observable userData = {
username: "jdoe",
firstname: "john",
lastname: "doe",
email: "[email protected]" <— This field is special
}
電子郵件字段是特殊的,只有當他們查看他們自己的配置文件時,它纔在已驗證用戶的配置文件中被提取/存在。當訪問另一個用戶的配置文件時,除電子郵件外,其他所有字段都應該存在,並且可以在沒有電子郵件的情況下從api獲取。
由於這些是2種不同類型的用戶,其電子郵件存在的auth用戶以及訪問任何其他用戶時,沒有電子郵件,只有所有其他各個字段。處理這個多用戶數據用例的最佳方式是什麼?
是否應該有2個商店有相同的重複字段,除了電子郵件?因此,上面的電子郵件在AuthStore中保持完好,然後是另一個帶有相同字段而沒有電子郵件的UserStore,並創建2個不同的原生ownerProfile.js(用於auth用戶)和profile.js(用於其他用戶)?這不正確...
什麼是最好的方式來存儲登錄的userData對象,以便在應用程序刷新時檢索它(如果可用),因爲它當前清空應用程序刷新上的配置文件的userData字段並訪問因爲我使用AuthStore.userData.username.toUpperCase();我得到一個錯誤,因爲它試圖在null上運行.toUpperCase()。
我碰到水合物/的toJSON但我對整個事情感到困惑,甚至不知道什麼時候/如何實現它們,或者即使他們是解決我的問題。我被困在我的項目中,因爲這個問題而無法前進。
任何想法如何解決這個使用MobX?
謝謝你的答案。我不認爲我完全理解這個「然後你可以讓UserStore包含一個可觀察的User實例和AuthStore,它有一個可指向當前用戶配置文件的可觀察字段。」與用戶類相關。你介意分享你的意思是設置的代碼嗎? – Wonka
@Wonka https://github.com/mobxjs/mobx-contacts-list/blob/master/src/app/stores/contact-store.js - mobx-contact-list實際上使用了相同的方法。有Contact類和ContactStore類。後一類具有可觀察屬性'contacts',它存儲'Contact'類的所有實例。 – Alik
謝謝Alik,會嘗試這種方法! – Wonka