Javascript Redux Thunk getStore()不';我不能保持状态。返回';未定义';
这可能是一个关于最佳实践的问题,但我希望您能解释一下为什么这不起作用。我正在使用Typescript+Redux+Thunk并尝试调用如下操作:Javascript Redux Thunk getStore()不';我不能保持状态。返回';未定义';,javascript,reactjs,redux,redux-thunk,Javascript,Reactjs,Redux,Redux Thunk,这可能是一个关于最佳实践的问题,但我希望您能解释一下为什么这不起作用。我正在使用Typescript+Redux+Thunk并尝试调用如下操作: export const requestUserDashboards = createAction<DashboardModel>(Type.REQUEST_USER_DASHBOARDS); 以下是相应的减速器: export const dashboardReducer = handleActions<RootState.Da
export const requestUserDashboards = createAction<DashboardModel>(Type.REQUEST_USER_DASHBOARDS);
以下是相应的减速器:
export const dashboardReducer = handleActions<RootState.DashboardState, DashboardModel>(
{
[DashboardActions.Type.REQUEST_USER_DASHBOARDS]: (state = initialState, action): RootState.DashboardState => ({
currentDashboard: action.payload!.currentDashboard,
dashboards: action.payload!.dashboards,
hasDashboards: action.payload!.hasDashboards,
error: action.payload!.error
})
},
initialState
);
使用以下命令在组件中调用此命令:
this.props.defaultAccountActions.fetchUserDefaultAccount()代码>
当获取的值被捕获时,该操作正在工作
但是,当我使用getState.xxxx
时,这些值返回为未定义:
index.tsx:84未捕获类型错误:无法读取未定义的属性“defaultAccount”
我的减速器的初始状态正在工作。我可以从componentWillMount()
函数的console.log(this.props.defaultAccounts.defaultAccount)
中看到这一点
我不确定我还能提供什么。我想我实际上只是从根本上误解了actions/Reducer是如何管理商店的
问题
我正在尝试使用分派中的getState.xxxx
获取当前存储值。这是正确的方法吗?getState不是一个函数吗?所以你需要做点什么
const state = getState();
然后在分派中使用状态
可以在文档中找到,是的,它在那个位置是一个函数,所以您应该首先调用一个函数来获取状态,然后使用它(例如,从下面的文档中)
getState在那个地方不是一个函数吗?所以你需要做点什么
const state = getState();
然后在分派中使用状态
可以在文档中找到,是的,它在那个位置是一个函数,所以您应该首先调用一个函数来获取状态,然后使用它(例如,从下面的文档中)
如果在组件中使用MapStateTops,则可以使用它从存储中获取值。mapStateToProps第一个参数实际上是Redux状态。它实际上是一个抽象的getState()
如果在组件中使用MapStateTops,则可以使用它从存储中获取值。mapStateToProps第一个参数实际上是Redux状态。它实际上是一个抽象的getState()
是的,在我的@connect
中,我将状态映射到道具。然而,不管怎样,这是一个很好的观点。我的OP中没有包括我的连接。谢谢。如果你认为这很有用,请投票回答:)是的,在我的@connect
中,我正在将状态映射到道具。然而,不管怎样,这是一个很好的观点。我没有把我的连接包括在我的操作中。谢谢。如果你认为这是有用的,请投票回答:)我认为这是正确的。我需要再多打一点,但现在它似乎起作用了!谢谢。我已经查看了Redux开发工具,现在可以看到操作是空的。即使应用了上述方法。但是,我可以看到我的默认状态确实包含正确的initialState
。所以我不认为是这样的。所以调度操作中的有效载荷是空的?是的。分派操作后,有效负载为空。确定。所以事实上,这是一个组合的Redux打字被窃听和我看得不够深入。因为rootState
是组合的。实际上,我应该调用getState()。state
其中state
是组件状态(在本例中为dashboards
),我认为这是正确的。我需要再多打一点,但现在它似乎起作用了!谢谢。我已经查看了Redux开发工具,现在可以看到操作是空的。即使应用了上述方法。但是,我可以看到我的默认状态确实包含正确的initialState
。所以我不认为是这样的。所以调度操作中的有效载荷是空的?是的。分派操作后,有效负载为空。确定。所以事实上,这是一个组合的Redux打字被窃听和我看得不够深入。因为rootState
是组合的。实际上,我应该调用getState()。state
其中state
是组件状态(dashboards
在本例中)您可以发布一个如何调用fetchDashboards的示例吗?您可以发布一个如何调用fetchDashboards的示例吗?
const state = getState();
function incrementIfOdd() {
return (dispatch, getState) => {
const { counter } = getState();
if (counter % 2 === 0) {
return;
}
dispatch(increment());
};
}
const mapStateToProps = function(state, ownProps) {
// state is equivalent to store.getState()
// you then get the slice of data you need from the redux store
// and pass it as props to your component
return {
someData: state.someData
}
}