0

伙计们。

我有以下异步动作创建者,它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. 希望你们能查明我代码中的错误。提前致谢。

4

1 回答 1

3

你的问题在于comparison

if(items === [])

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

于 2017-04-11T04:36:33.170 回答