异步操作创建者未按预期分派操作
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
。希望对您有所帮助。
伙计们。
我有以下异步动作创建者,它根据当前状态调度另一个动作创建者或 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
。希望对您有所帮助。