如何从 redux-saga select() 获取状态?

How to get the state from redux-saga select()?

故事如下。

function *callUserAuth(action) {
    const selectAllState = (state) => state;
    const tmp = yield select(selectAllState);
    console.log(tmp);
}

控制台显示 enter image description here

我怎样才能得到这样的状态 redux 中的 getState["userLoginReducer","isLogin"] ?

我试过像下面这样编码。

const tmp = yield select(selectAllState._root.entries);

但错误是

index.js:1 TypeError: Cannot read property 'entries' of undefine

您的 redux 状态似乎正在使用 Immutable.js。

select 效果不会将您的不可变结构转换为普通结构 javascript。所以你需要使用 Immutable 的方法来获取你想要的值。要获取整个 Immutable 状态然后将其转换为纯 javascript 对象,您可以执行以下操作:

function *callUserAuth(action) {
    const selectAllState = (state) => state;
    const tmp = yield select(selectAllState);
    console.log(tmp.toJS());
}

但通常您可能希望使用选择器来获取像 isLogin 值这样的子集。在这种情况下,您可以改为这样做:

function *callUserAuth(action) {
    const getIsLogin = (state) => state.get('userLoginReducer').get('isLogin');
    const isLogin = yield select(getIsLogin);
    console.log(isLogin);
}