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