Redux getState 在行动中不起作用
Posted
技术标签:
【中文标题】Redux getState 在行动中不起作用【英文标题】:Redux getState in action not working 【发布时间】:2018-09-17 16:55:14 【问题描述】:我对 redux 中的 getState() 有点困惑。我正在使用 thunk 中间件。
我有一个异步操作的身份验证操作。但是我有一个动作,在它之前运行检查令牌是否存在于状态以及它是否仍然有效。
我的问题是,当我调用该操作时,我似乎无法检查状态。以为我可以只使用 getState 但这似乎不是一个函数。
container.js
componentDidMount()
this.props.authCheck()
...
function mapDispatchToProps(dispatch)
return
authCheck: () => checkApiStatus()(dispatch)
Action.js
export const checkApiStatus = () => (dispatch, getState) =>
const expires_at = getState().api.expires_at
if (!expires_at || isDateGreater(expires_at))
// dispatch async action
dispatch(apiAuth())
return
任何人都有任何想法。或者也许更好的方式来实现这样的东西?
谢谢
【问题讨论】:
我想我可以添加 authCheck: () => checkApiStatus()(dispatch, store.getStore) 并将商店导入容器。看起来我做错了什么。 我也在尝试解决这个问题。这是一个关于 thunk 的热门相关问题:***.com/q/35667249/470749 【参考方案1】:问题是您在 mapDispatchToProps
方法中显式调用返回的函数并且只传递一个参数。而是调用 dispatch(checkApiStatus())
然后 redux-thunk 将负责将正确的参数传递给返回的方法。应该是这样的
function mapDispatchToProps(dispatch)
return
authCheck: () => dispatch(checkApiStatus())
【讨论】:
以上是关于Redux getState 在行动中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 redux-thunk 在 Storybook 中不起作用?
asyncBlurFields 在 Redux-Form 中不起作用
Fetch Post 在 redux-saga 中不起作用?