【发布时间】:2017-03-27 22:33:36
【问题描述】:
我有一个使用 React、Redux 和 Firebase 的聊天应用。我还使用 thunkmiddleware 使用 Firebase 进行状态的异步更新。 我成功地得到了我需要的一切,除了一切都取决于以前硬编码的变量。
问题是,我如何在我的 ActionCreators 中调用 getState() 方法来检索我需要的状态值来填充我的其余状态?
我目前有我的身份验证:{ uid = 'XXXZZZYYYY' }..。我只需要这样称呼它
getState().auth.uid
然而这根本不起作用。
我尝试了很多不同的问题,使用 mapDispatchToProps 等。如果需要,我可以显示我的 repo。
值得一提的是,我尝试关注另一个问题但没有成功。 Accessing Redux state in an action creator? 这是我当前的相关代码:
const store = createStore(
rootReducer,
defaultState,
applyMiddleware(thunkMiddleware));
还有
function mapDispatchToProps(dispatch) {
watchFirebase(dispatch); // to dispatch async Firebase calls
return bindActionCreators(actionCreator, dispatch);
}
const App = connect(mapStateToProps, mapDispatchToProps)(AppWrapper);
我正在正确导出,因为许多其他 not pure 函数正常工作。
例如,这可以正常工作:
export function fillLoggedUser() {
return (dispatch, getState) => {
dispatch({
type: C.LOGGED_IN,
});
}
}
然而,正如下面所建议的,这不起作用:
const logState = () => ( dispatch, getState ) => {
console.log(getState());
};
【问题讨论】:
-
正如您链接的 SO 答案中所建议的那样,最简单的方法是使用 redux-thunk。如果您已经尝试过,请发布一些代码,以便我们可以帮助您解决您的具体问题。