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 中不起作用

Await 关键字在 Redux 操作中不起作用

Fetch Post 在 redux-saga 中不起作用?

Next.JS Redux 调度在 getStaticProps() 中不起作用

redux-react-route v4/v5 push() 在 thunk 动作中不起作用