Was ist die beste Vorgehensweise beim Initialisieren eines Geschäfts basierend auf einem anderen und setzen Sie beide in Provider
? Ich habe ein Geschäft namens AuthManager
es besitzt eine beobachtbare Eigenschaft namens user
. Ich habe auch ein anderes Geschäft namens GoalManager
. Ich brauche die user
Eigenschaft von AuthManager
, GoalManager
zu initialisieren. möchte ich GoalManager
so konstruieren:Wie kann man mobx-react Provider Geschäfte hinzufügen, wenn sie voneinander abhängig sind?
const goalManager = new GoalManager(user);
Aber es ist nicht möglich, etwas hinzuzufügen, später in den Kontext reagieren, weil einige Kinder können nicht auf Änderungen von kontextbasierten Update! Ich löste dieses Problem, indem AuthManager
Instanz GoalManager
‚s Konstruktor zu senden, aber ich mag es nicht:
// services.js
const authManager = new AuthManager();
const goalManager = new GoalManager(authManager);
export default {
authManager,
goalManager
}
und später:
// index.jsx
import services from './services';
render(`
<Provider {...services}>
<App />
</Provider>`, mountPoint);
ich diese Lösung nicht gefällt, weil ich hatte abhängig von GoalManager
bis AuthManager
aber es hängt nur von AuthManager.user
ab. Dann ist das Testen von GoalManager
schwieriger (weil Sie ein großes Objekt vortäuschen müssen).
Gibt es dafür eine bessere Lösung?
Wie man 'AuthManager' vortäuscht, wenn 'GoalManager' getestet wird? – Veikedo
Was ist mit serverseitigem Rendering? Sie können keine Singletons verwenden, da Mobx-Instanzen zwischen separaten HTTP-Anfragen aufgeteilt werden. Persönlich löste ich dieses Problem auf die gleiche Weise wie in Frage, indem ich eine neue Instanz in den Konstruktor eines anderen Speichers einfügte, aber ich bin nicht 100% glücklich damit. – klis87
Ich würde nicht mobx auf dem Server für das Rendern verwenden, es ist client-side-fancy reaction lib, der springende Punkt von mobx ist reaktive Laufzeit, nicht initiale Daten laden .. ich würde sagen .. – webdeb