Создатель асинхронного действия не отправляет ожидаемое действие
Ребята.
У меня есть следующий создатель асинхронного действия, который отправляет другого создателя действия или возвращает 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
, Надеюсь, вы, ребята, сможете точно определить ошибку в моем коде. Заранее спасибо.
1 ответ
Ваша проблема заключается в comparison
if(items === [])
В приведенном выше коде элементы не будут ===
в []
поскольку они оба имеют разные экземпляры. Если вы хотите проверить, если items
пусто, пожалуйста, используйте items.length === 0
, Надеюсь, это поможет.