如何从 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);
}
故事如下。
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);
}