Ecmascript 6 异步操作创建者未按预期调度操作
伙计们 我有以下异步操作创建者,它根据当前状态分派另一个操作创建者或返回Ecmascript 6 异步操作创建者未按预期调度操作,ecmascript-6,redux,redux-mock-store,Ecmascript 6,Redux,Redux Mock Store,伙计们 我有以下异步操作创建者,它根据当前状态分派另一个操作创建者或返回null。问题是无论当前状态如何,它总是返回null // actions.js export const loadPosts = category => (dispatch, getState) => { const currentState = getState() const posts = currentState.postsByCategory const categoryPosts =
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
}
如您所见,action creator调度fetchPosts()
取决于项的值是否等于空数组。我正在测试它,为它提供具有以下结构的初始状态:
// initialState
const initialState = {
postsByCategory: {
hot: {
isFetching: false,
items: []
}
}
}
我显然没有正确地访问items
属性,但是我看不到代码中的错误在哪里。
我正在用redux mock store对此进行测试,创建一个mockStore实例,并为其提供initialState
。
希望你们能找出我代码中的错误。
提前感谢。您的问题在于比较
if(items === [])
在上面的代码中,项目将不会是==
到[]
,因为它们都是不同的实例。如果要检查items
是否为空,请使用items.length==0
。希望这能有所帮助。您的问题在于比较
if(items === [])
在上面的代码中,项目将不会是==
到[]
,因为它们都是不同的实例。如果要检查items
是否为空,请使用items.length==0
。希望能有帮助。嘿,伙计,这很有效。谢谢我只是不太明白==[]和使用.length==0之间的区别。它是否与数组元数据有关?你有没有进一步阅读的建议来更好地理解这一点?嘿,伙计,它奏效了。谢谢我只是不太明白==[]和使用.length==0之间的区别。它是否与数组元数据有关?为了更好地理解这一点,你有没有进一步阅读的建议?