Redux - Редуктор не вызывается - PullRequest
1 голос
/ 12 октября 2019

Цель

Я пытаюсь передать некоторые объекты, которые я возвращаю из Firestore, в мой редуктор, чтобы я мог отобразить некоторые результаты обратно пользователю.

Проблема

КогдаЯ пытаюсь позвонить и передать запрос редуктору, он не работает. Я запускаю console.log, чтобы увидеть, вызывается ли редуктор, но нигде не появляется. Я думаю, потому что у меня есть вложенные операторы возврата ?, Это правда?

Вот мое действие:

export const queryBidder = (value) => {
  return async (dispatch, getState, { getFirestore }) => {
    const firestore = getFirestore();
    const normalizeValue = _.capitalize(value);
    let Query = []
    firestore.collection("bidders").where("firstname", ">=", normalizeValue).get()
    .then(snapshot => {
      if (snapshot.empty) {
        console.log('No matching bidders.');
        return;
      }  
      snapshot.forEach(doc => {
        Query.push(doc.data());
        return { type: actionTypes.QUERYBIDDER, Query: Query };
      });

    })
    .catch(err => {
      console.log('Error getting documents', err);
    });
  }
};

Когда я помещаю оператор возврата выше асинхронного оператора возврата, все работает хорошо,Однако мне нужно уметь звонить getFirestore(). Эта установка взята из учебника, который я нашел в Udemy, если честно, я не совсем понимаю его.

return async (dispatch, getState, { getFirestore })

Как они проходят? Откуда они? Почему заказ имеет значение? Как я могу просто получить доступ к функции getfirestore(), не оборачивая логику своих действий в эту функцию?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Из избыточной документации об использовании отправки - This is the only way to trigger a state change. Таким образом, в основном, если вы хотите изменить состояние избыточности, вы должны отправить действие с параметрами - типом действия и новыми данными.

Подробнее об отправке избыточности можно прочитать здесь

0 голосов
/ 12 октября 2019

Я не уверен, почему это сработало, но в ожидании ответов я решил перейти от возврата к отправке.

dispatch({ type: actionTypes.QUERYBIDDER, Query: Query });

это решило мою проблему. Ищите более подробный ответ о том, почему это сработало, и мои приведенные выше оригинальные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...