Saga 永远不会转换到下一个状态,尽管产生了一个被发送的动作
Saga never transitions into next state despite yielding an action that is sent
此 saga 与 LOGIN_SUCCESS
操作一起使用并正确保存数据。但是在那之后它再也没有对 LOGOUT_SUCCESS
做出反应
function *persistAccount() {
while (true) {
const result = yield take([actions.LOGIN_SUCCESS, actions.USER_UPDATED, actions.LOGOUT_SUCCESS])
console.info("Got persist action")
switch (result.type) {
case actions.LOGIN_SUCCESS:
case actions.USER_UPDATED:
console.info("Updating credentials")
if (result.access_token) {
localStorage["access_token"] = result.access_token
}
if (result.user) {
localStorage["user"] = JSON.stringify(result.user)
}
break
case action.LOGOUT_SUCCESS:
debugger
console.info("Clearing credentials")
localStorage.removeItem("access_token")
localStorage.removeItem("user")
break
}
}
console.info("!!!!!!!!!!!!!!!!!!!EXIT")
}
它也永远不会完成,因为这会将最后一行中的文本打印到控制台。
怎么回事?
真不敢相信我花了这么长时间才看到。这是一个错字:
case action.LOGOUT_SUCCESS:
需要:
case actions.LOGOUT_SUCCESS: // "actions" instead of "action"
此 saga 与 LOGIN_SUCCESS
操作一起使用并正确保存数据。但是在那之后它再也没有对 LOGOUT_SUCCESS
function *persistAccount() {
while (true) {
const result = yield take([actions.LOGIN_SUCCESS, actions.USER_UPDATED, actions.LOGOUT_SUCCESS])
console.info("Got persist action")
switch (result.type) {
case actions.LOGIN_SUCCESS:
case actions.USER_UPDATED:
console.info("Updating credentials")
if (result.access_token) {
localStorage["access_token"] = result.access_token
}
if (result.user) {
localStorage["user"] = JSON.stringify(result.user)
}
break
case action.LOGOUT_SUCCESS:
debugger
console.info("Clearing credentials")
localStorage.removeItem("access_token")
localStorage.removeItem("user")
break
}
}
console.info("!!!!!!!!!!!!!!!!!!!EXIT")
}
它也永远不会完成,因为这会将最后一行中的文本打印到控制台。
怎么回事?
真不敢相信我花了这么长时间才看到。这是一个错字:
case action.LOGOUT_SUCCESS:
需要:
case actions.LOGOUT_SUCCESS: // "actions" instead of "action"