पर नेविगेट करें मैं ngrx और Redux शैली आर्किटेक्चर के लिए नया हूं और मुझे समस्याएं आ रही हैं कि मुझे कार्रवाई क्रियाओं को कैसे प्रभावित करना चाहिए। एक उदाहरण बुनियादी कार्यक्षमता प्राप्त कर रहा है जैसे उपयोगकर्ता लॉग इन करने के बाद कोई कार्रवाई करना। मेरा मुख्य संघर्ष यह है कि उपयोगकर्ता लॉग इन करने के बाद की जाने वाली कार्रवाई को आवेदन की वर्तमान स्थिति के आधार पर अलग-अलग किया जाएगा - उपयोगकर्ता कहीं भी हो सकता है लॉगिन प्रॉम्प्ट/पेज के साथ प्रस्तुत किए जाने पर एप्लिकेशन में।ngrx चेनिंग क्रिया/प्रभाव - उदाहरण के लिए लॉगिन करें और फिर
कोई भी उदाहरण मैंने हार्डकोड प्रभाव देखा है जो उपयोगकर्ता द्वारा लॉग इन करने के बाद होगा। मेरे परिदृश्य में यह ऊपर बताए अनुसार ठीक से फिट नहीं होता है, मैं हमेशा एक ही कार्रवाई नहीं करना चाहता हूं।
यहां होम पेज का कुछ उदाहरण कोड है जिसमें लॉगिन घटक शामिल है। इस परिदृश्य में मैं उपयोगकर्ता/खरीदें 'पर पुनः निर्देशित किया करने के लिए एक बार वे में प्रवेश करने वाले चाहते हैं
@Component(..)
export class HomePageComponent {
constructor(private store: Store<any>) {
}
public onLoginSubmitted(username, password) {
this.store.dispatch(new loginActions.Login({username, password}));
// once this has happened successfully navigate to /buy
}
}
उदाहरण प्रभाव
@Injectable()
export class LoginEffects {
......
@Effect()
login$ = this.actions$
.ofType(loginActions.ActionTypes.LOGIN)
.switchMap((data) => {
return this.loginService.login(data.payload)
.map(() => new loginActions.LoginSuccess({loggedIn: true, isLoggingIn: false}))
.catch((error) => {
return of(new loginActions.LoginError({loggedIn: false, isLoggingIn: false}));
});
});
......
}
मैं कैसे आप इस समस्या को हल कर सकते हैं पर कई विचार किया है। - लेकिन उनमें से कोई भी सही महसूस नहीं करता है। ये
- लॉगिन पेलोड के साथ डेटा गुजर एक कार्रवाई निर्धारित करने के लिए अगले
- प्रभाव जो LoginSuccess पर कार्रवाई करने, लेकिन कुछ उच्च स्तर
- पर फ़िल्टर्ड रहे हैं सुनकर एक घटक विशेष प्रभाव लिखने के बहुत सारे लेखन लेने के लिए शामिल स्टोर पर घटनाओं के लिए (क्या यह संभव/खराब अभ्यास है?)
- वर्तमान लॉगिन स्थिति के बारे में स्टोर से डेटा पढ़ने और घटक में इस पर कार्य करने के लिए। हालांकि यह तर्क तुरंत चलाया जाएगा, जिसके पास वांछित प्रभाव नहीं हो सकता है
क्या कोई मुझे सही पथ/वर्तमान उदाहरणों को इंगित कर सकता है कि इसे हल किया जाना चाहिए?
पेलोड का हिस्सा 'रीडायरेक्ट रूट' हो सकता है, और फिर लॉगिन के बाद, 'LoginSuccess' प्रभाव' रीडायरेक्ट रूट 'निर्दिष्ट करता है, इस पर आधारित नेविगेट करेगा। आपके पास केवल एक 'loginSuccess' कार्रवाई होगी, लेकिन यह कहीं भी रीडायरेक्ट कर सकती है। – Adam
यह हो सकता है - लेकिन यह मानता है कि आप हमेशा लॉगिन के बाद रीडायरेक्ट करना चाहते हैं। यह आवश्यक रूप से मामला नहीं हो सकता है, उदाहरण के लिए आप एक मॉडल – dannym