异步操作创建者未按预期分派操作

Async action creator not dispatching action as expected

伙计们。

我有以下异步动作创建者,它根据当前状态调度另一个动作创建者或 returns null。问题是无论当前状态如何,它总是返回 null

// actions.js

export const loadPosts = category => (dispatch, getState) => {
  const currentState = getState()
  const posts = currentState.postsByCategory
  const categoryPosts = posts[category]
  const items = categoryPosts.items

  if(items === []) {
    return dispatch(fetchPosts(category))
  }

  return null
}

如您所见,调度 fetchPosts() 的动作创建者取决于 items 的值是否等于空数组。我正在测试它,为它提供具有以下结构的初始状态:

// initialState
const initialState = {
  postsByCategory: {
    hot: {
      isFetching: false,
      items: []
    }
  }
}

我显然没有正确访问 items 属性,但我看不出代码中的错误在哪里。 我正在使用 redux-mock-store 对此进行测试,创建 mockStore 的实例,并为其提供 initialState。 希望你们能查明我的代码中的错误。 提前致谢。

你的问题出在comparison

if(items === [])

在上面的代码中,项目不会是 ===[],因为它们属于不同的实例。如果要检查 items 是否为空,请使用 items.length === 0。希望对您有所帮助。