मैं ऐसे अनुप्रयोग पर काम कर रहा हूं जो एनआरएक्सएक्स/स्टोर 1.5 का उपयोग थंक मिडलवेयर के साथ कर रहा है और मैं एनजीआरएक्स/स्टोर 2.0 और एनजीआरएक्स/प्रभावों में जाने की कोशिश कर रहा हूं। मेरे पास कई संबंधित कार्यों और/या प्रभावों को संभालने के तरीके के संबंध में कुछ प्रश्न हैं।एनजीआरएक्स/प्रभावों के साथ कई संबंधित संचालन/प्रभाव/क्रियाएं कैसे करें
मुझे एहसास है कि थंक्स बनाम प्रभावों के लिए "मानसिकता" अलग है और मैं अंतर के चारों ओर अपना सिर पाने की कोशिश कर रहा हूं। मैंने उपलब्ध उदाहरण ऐप्स को देखा है, और जो कुछ भी मैं कोशिश कर रहा हूं उसे फिट करने के लिए कुछ भी नहीं मिला है, इसलिए शायद मैं अभी भी पूरी तरह गलत हूं।
@Effect login$: any = this.updates$
.whenAction(LoginActions.LOGIN)
.map(toPayload)
.switchMap(payload =>
this.loginService.login(payload.user, payload.password)
.map(result => this.actions.loginSuccess(value))
.catch((error) => Observable.of(this.loginError(error)))
));
यह देखते हुए कि प्रारंभिक पक्ष प्रभाव, क्या "सही होगा:
परिदृश्य 1
यहाँ एक पक्ष प्रभाव एक लॉगिन के लिए सर्वर के लिए अनुरोध करने वाले को संभालने के लिए है सफल लॉगिन पर "होम" स्क्रीन पर नेविगेशन ट्रिगर करने के लिए "या" सुझाया गया "तरीका? इसे क्रियाओं या संचालन के अनुक्रम को आसानी से ट्रिगर करने के लिए भी सामान्यीकृत किया जा सकता है।
कुछ विकल्प पर विचार किया है:
(क) एक और प्रभाव लॉगिन सफलता से शुरू हो रहा है कि एक बाद कार्रवाई आग नेविगेशन गति प्रदान करने के?
@Effect navigateHome$: any = this.updates$
.whenAction(LoginActions.LOGIN_SUCCEEDED)
.mapTo(this.actions.navigateHome());
(बी) लॉगिन सफलता से ट्रिगर एक और प्रभाव, जो केवल नेविगेशन ऑपरेशन करता है?
@Effect navigateHome$: any = this.updates$
.whenAction(LoginActions.LOGIN_SUCCEEDED)
.do(this.navigateHome())
.filter(() => false);
(सी) शुरुआती लॉगिन प्रभाव से उत्सर्जित लोगों को अतिरिक्त कार्रवाई का सामना करना? (नमूना स्पष्ट रूप से बिल्कुल सही नहीं है, लेकिन विचार देता है)
@Effect login$: any = this.updates$
.whenAction(LoginActions.LOGIN)
.map(toPayload)
.switchMap(password => Observable.concat(
this.loginService.login(passcode)
.map(result => this.actions.loginSuccess(value))
.catch((error) => Observable.of(this.loginError(error))),
Observable.of(this.actions.navigateHome())
));
(डी) अन्य?
परिदृश्य 2
एक मामले में जहां अनुरोधों का एक नंबर अनुक्रम में किए जाने की जरूरत है पर विचार करें, और के रूप में प्रत्येक अनुरोध शुरू होता है हम उस प्रतिक्रिया उपयोगकर्ता के लिए प्रदान किया जा सकता है ताकि "स्थिति" अपडेट करना चाहते हैं।
उन पंक्तियों के साथ कुछ करने के लिए एक thunk का उदाहरण:
multiphaseAction() {
return (dispatch) => {
dispatch(this.actions.updateStatus('Executing phase 1');
this.request1()
.flatMap(result => {
dispatch(this.actions.updateStatus('Executing phase 2');
return this.request2();
})
.flatMap(result => {
dispatch(this.actions.updateStatus('Executing phase 3');
return this.request3();
})
...
}
}
फिर, क्या होगा "सही" या "सुझाव" जिस तरह से प्रभाव दृष्टिकोण का उपयोग कर में इस बारे में जाने के लिए?
यह एक मैं और अधिक, पर अटक वास्तव में नहीं यकीन है कि क्या कुछ .do(this.store.dispatch(this.actions.updateStatus(...))
किसी भी तरह जोड़ने के अलावा अन्य किया जा सकता है हूँ ...
परिदृश्य 2 एक सादे पुराने सेवा वर्ग के लिए एक बहुत अच्छी मामला है। –