Javascript Redux Thunk getStore()不';我不能保持状态。返回';未定义';

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

这可能是一个关于最佳实践的问题,但我希望您能解释一下为什么这不起作用。我正在使用Typescript+Redux+Thunk并尝试调用如下操作:

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
   }
}