4

In der Beispiel sagas von react-boilerplate werden sagas als Array ausgeführt:für neue Route

export function* defaultSaga() { 

} 

export default [ 
    defaultSaga, 
]; 

Der Standard dann in routes.js injiziert wird:

... 
injectSagas(sagas.default); 
... 

Wenn jedoch I hinzugefügt eine neue Route für die Authentifizierung, bekomme ich eine Fehlermeldung, die saga argument must be a Generator function! sagt, auch wenn ich nur die Standard-Sagas (das gleiche wie oben).

Ich fügte hinzu, um die Strecke zu routes.js:

//routes.js 
export function authRoutes(store) { 
    //same code as createRoutes 
} 

und importiert die Funktion eine neue Route für die Router in app.js zu erstellen:

//app.js 
const rootRoute = { 
    component: App, 
    childRoutes: createRoutes(store), 
}; 

const authRoute = { 
    path: '/auth', 
    component: Auth, 
    childRoutes: authRoutes(store), 
}; 

const routes = { 
    childRoutes: [rootRoute, authRoute], 
}; 

Wenn ich die Standardeinstellung sagas.js zu bearbeiten versuchen :

export default function* root() { 
    yield [ 
    defaultSaga(), 
    ]; 
} 

I Fehler erhalten injectAsyncSagas: Expected "sagas" to be an array of generator functions. Also, was ich tat, war sagas.default in der neuen Route in einem Array zu wickeln:

//routes.js - authRoutes(store) 
importModules.then(([reducer, sagas, component]) => { 
    injectReducer('login', reducer.default); 
    injectSagas([sagas.default]); 
    renderRoute(component); 
}); 

Warum erhalte ich diese Fehler immer und wie kann ich sie lösen? (Ich bin ziemlich neu zu reagieren und Generatoren.)

Antwort

1

Whoops. Ich vergaß, dass ich store.runSaga(mySagas) in store.js anrief, als ich prüfte, das eine Reihe Generatorfunktionen annimmt. Ich habe es entfernt und der Fehler ist verschwunden.

Verwandte Themen