首页 > 解决方案 > 从 saga 中的 socket.io 事件中发送动作

问题描述

我正在尝试使用 socket.io 和 redux-saga 使我的登录流程正常工作。

建立套接字连接和验证用户没有问题,但是当我尝试从“loginSuccess”事件调度一个动作时,什么也没有发生

登录传奇如下所示:

import { takeLatest, call, put, take } from "redux-saga/effects";
import * as types from "../actions/types";
import connect from "../constants/socketConnection";

function* doLogin(action) {
        const socket = yield call(connect);
        socket.emit("login", {
            username: action.username,
            password: action.password
        });
        socket.on("loginSuccess", (response) => {
            yield put({type: types.SET_CURRENT_USER, currentUser: response.user})
        });
}

export function* login() {
    yield takeLatest(types.LOGIN, doLogin);
}

不能从 socket.on() 中发送动作吗?语法是正确的(它在我的其他项目中有效),但是 VS 代码说从未使用过“put”和“response”,并且当 put 存在时 Prettier 无法自动格式化,因此它没有注册。虽然没有显示错误。

标签: react-nativesocket.ioredux-saga

解决方案


推荐阅读