刚刚发现我可以使用getState()将状态值传递给动作创建者。但是我注意到getState()返回所有组合状态而不是参数中指定的状态。我做错了什么,因为我不认为这是正确的行为?
减速机:
import { combineReducers } from "redux";
import { reducer as reduxForm } from "redux-form";
import authReducer from "./authReducer";
export default combineReducers({
auth: authReducer,
form: reduxForm
});
动作创建者代码段:
export const handleProviderToken = token => async (dispatch, getState) => {
let testState = getState("auth");
console.log(testState);
const res = await axios.get(`${API_URL}/api/testEndpoint`);
dispatch({ type: FETCH_USER, payload: res.data });
};
console.log(testState)向我显示整个状态树对象(auth和form,而不仅仅是auth)。
答案 0 :(得分:5)
引用redux-thunk文档
内部函数接收存储方法dispatch和getState as 参数。
并引用redux的文档
getState()返回应用程序的当前状态树。它是 等于商店减速器返回的最后一个值。
因此,感谢redux-thunk传递的getState实际上是redux的getState()函数本身,因此它是默认行为。
要从状态树中获取特定值,您可以使用以下某个
const { auth } = getState()
// OR
const testState = getState()
const auth = testState.auth
答案 1 :(得分:1)
这是正确的行为。 From docs:
返回应用程序的当前状态树。它等于 商店减速机返回的最后一个值。
答案 2 :(得分:1)
这是正确的行为。您需要从完整状态中选择reducer密钥。
export const handleProviderToken = token => async (dispatch, getState) => {
let testState = getState();
let authReducer = testState.auth;
const res = await axios.get(`${API_URL}/api/testEndpoint`);
dispatch({ type: FETCH_USER, payload: res.data });
};
答案 3 :(得分:0)
在类似情况下对我有用的是
const lastFetchedPage =getState().images.lastFetchedPage;
但是,我不知道它与指南如何配合。