Создатель асинхронного действия не отправляет ожидаемое действие

Ребята.

У меня есть следующий создатель асинхронного действия, который отправляет другого создателя действия или возвращает 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, Надеюсь, это поможет.

Другие вопросы по тегам