Javascript 访问;getState“;从动作创建者内部使用redux thunk?

Javascript 访问;getState“;从动作创建者内部使用redux thunk?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一个mapDispatchToProps函数,如下所示 export function mapDispatchToProps(dispatch, ownProps) { return { handleChangeLang: changeLocaleDispatcher(dispatch), handleChange: handleChangeDispatcher(dispatch), handleSubmit: handleSubmitDispatcher(dis

我有一个
mapDispatchToProps
函数,如下所示

export function mapDispatchToProps(dispatch, ownProps) {
  return {
    handleChangeLang: changeLocaleDispatcher(dispatch),
    handleChange: handleChangeDispatcher(dispatch),
    handleSubmit: handleSubmitDispatcher(dispatch)
  }
}
我刚刚在我的项目中添加了
redux thunk
,这样我就可以从我的动作创建者那里访问
state
(认为这是正确的术语)

redux thunk
中似乎没有任何文档概述如何从
mapDispatchToProps
访问
getState
。文档
分派
使用
存储.分派
方法。

黑客修复:/

let ProvidedApp = (serverProps) => {

  let store = getStore(serverProps)

  let ConnectedApp = connect(
    mapStateToProps,
    mapDispatchToProps(store)
  )(App)

  return (
    <Provider store={store}>
      <ConnectedApp/>
    </Provider>
  )
}

export function mapDispatchToProps(store) {
  return (dispatch, ownProps) => {
    return {
      handleChangeLang: store.dispatch(changeLocaleDispatcher),
      handleChange:  store.dispatch(handleChangeDispatcher),
      handleSubmit: store.dispatch(handleSubmitDispatcher)
    }
  }
}
let ProvidedApp=(serverProps)=>{
let store=getStore(serverProps)
让ConnectedApp=connect(
MapStateTops,
mapDispatchToProps(商店)
)(应用程序)
返回(
)
}
导出函数mapDispatchToProps(存储){
返回(分派,ownProps)=>{
返回{
handleChangeLang:store.dispatch(changeLocaleDispatcher),
handleChange:store.dispatch(handleChangeDispatcher),
handleSubmit:store.dispatch(handleSubmitDispatcher)
}
}
}

您的初始语法是错误的,“hacky”示例也不是您应该怎么做的

示例如下所示:

import {thunkAction1, thunkAction2} from "myActions";
import {bindActionCreators} from "redux";

const mapDispatchToProps(dispatch) => {
    return {
        manuallyBoundAction : (...args) => dispatch(thunkAction1(...args)),
        autoBoundAction : bindActionCreators(thunkAction2, dispatch),
        multipleActionsTogether : bindActionCreators({thunkAction1, thunkAction2}, dispatch)
    }
};
不,
getState
本身在
mapDispatchToProps
中不可访问。它在thunk中可用,但不是
mapDispatch


您可能需要阅读,以及上的Redux文档。

因此,虽然在您的问题中我没有看到您当前的action creator,但我假设它是ES6/ES2015 javascript

下面的内容可以让你自由地抓住任何一个州。既然你已经有了redux thunk,你应该可以走了

export function setActivity(activityName) {
  return function (dispatch, getState) {
    dispatch({
      type: SET_ACTIVITY,
      description: 'Set the name of the activity being done now',
      currentActivityName: activityName,
      currentActivityData: getState().activityStore.activities[activityName]
    });
  };
}
activityStore与您为特定减速器定义的内容相同,请参见下文

export const reducers = {
  activityStore: ActivityStore.reducer,
  someOtherStore: SomeOtherStore.reducer
};