Ich bin neu zu reagieren redux. Ich probiere Redux Saga aus und stoße auf einige Fehlermeldungen, die ich nicht verstehen konnte. Das ist mein rootSaga:Redux Saga "rootSaga wurde abgebrochen"
import { takeEvery } from 'redux-saga';
import { AUTH_LOAD_SUCCESS,AUTH_SIGNUP,AUTH_SIGNIN,AUTH_SIGNOUT } from '../reducers/auth';
import { receiveAuth,signUp,signIn,onSignOut } from './auth';
export default function* rootSaga(){
yield [
takeEvery('AUTH_LOAD_SUCCESS', receiveAuth),
takeEvery('AUTH_SIGNUP', signUp),
takeEvery('AUTH_SIGNOUT',onSignOut),
takeEvery('AUTH_SIGNIN', signIn)
]
}
SignIn und SignUp perfekt funktioniert für mich aber danach habe ich die folgenden Fehlermeldungen in meiner Konsole bekommen. Obwohl ich mich zwar mit redux-saga anmelden kann, kann ich SignOut aber vermutlich nicht aktivieren, weil die Saga laut den Fehlermeldungen "abgebrochen" wurde. Kann mir bitte jemand erklären, was vor sich geht? Dank
bundle.js:79457 uncaught at check call: argument fn is undefinedlog @ bundle.js:79457
bundle.js:79457 rootSaga has been cancelled
bundle.js:79457 uncaught at rootSaga
at rootSaga
at signIn
Error: call: argument fn is undefined
at check (http://127.0.0.1:3000/dist/bundle.js:79313:12)
at getFnCallDesc (http://127.0.0.1:3000/dist/bundle.js:80311:21)
at call (http://127.0.0.1:3000/dist/bundle.js:80336:24)
at signIn$ (http://127.0.0.1:3000/dist/bundle.js:81213:47)
at tryCatch (http://127.0.0.1:3000/dist/bundle.js:7893:41)
at GeneratorFunctionPrototype.invoke [as _invoke] (http://127.0.0.1:3000/dist/bundle.js:8167:23)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (http://127.0.0.1:3000/dist/bundle.js:7926:22)
at next (http://127.0.0.1:3000/dist/bundle.js:79727:28)
at currCb (http://127.0.0.1:3000/dist/bundle.js:79801:8)
at http://127.0.0.1:3000/dist/bundle.js:79904:17
Zusätzliche Informationen:
sagas/auth.js
import 'babel-polyfill';
import fetch from 'isomorphic-fetch'
import { browserHistory } from 'react-router';
import cookie from 'react-cookie';
import { put,call,select } from 'redux-saga/effects';
import { requestSignUp,requestSignIn,requestSignOut,receiveUser,receiveSignIn,receiveSignOut } from '../reducers/auth'
export function* onSignOut(){
/////////////////ignore this for the moment///////
console.log("ffss")
}
export function* receiveAuth() {
const user = cookie.load('username');
yield put(receiveAuth(user));
}
export function* signUp(action) {
yield put(requestSignUp())
try {
const response = yield call(fetch,'/api/sign_up', {
method:'POST',
headers:{'Accept': 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify(action.payload) /////action.payload contains {username:'aa',password:'aa'}
})
if(response.ok){
yield call(cookie.save,'username', action.payload.username)
yield put(receiveUser(action.payload.username))
yield call(browserHistory.push('/chat'))
}
} catch (err){
throw err
}
}
export function* signIn(action) { console.log("hi")
yield put(requestSignIn())
try {
const response = yield call(fetch,'/api/sign_in', {
method:'POST',
headers:{'Accept': 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify(action.payload) /////action.payload contains {username:'aa',password:'aa'}
})
if(response.ok){
yield call(cookie.save,'username',action.payload.username)
yield put(receiveSignIn(action.payload))
yield call(browserHistory.push('/chat'))
}
} catch (err){
throw err
}
}
Ich glaube, ich erwartete ich in einem zweiten Argument zu setzen, aber zu rufen, wenn ich null dh yield call(browserHistory.push('/chat'),null)
codiert ich immer noch die Fehler
uncaught at signIn call: argument fn is undefined
uncaught at check call: argument fn is undefined
Außerdem gibt meine receiveAuth diese Nachricht zurück:
uncaught at rootSaga
at rootSaga
at receiveAuth
Error: Actions must be plain objects. Use custom middleware for async actions.
Können Sie den Code für die Signin Saga schreiben? es sieht aus wie das ist, wo die Ausnahme geworfen wird –