Как сделать так, чтобы пользователи знали, что я жду ответа от БД в Redux? - PullRequest
0 голосов
/ 02 марта 2020

Я хочу отправить данные на сервер и дождаться ответа. Чтобы сделать это, я бы хотел, чтобы мой метод действия Redux сначала запускал мгновенное действие объекта, чтобы мой пользовательский интерфейс отображал его ожидание, а затем действие thunk после ответа сервера. Могу ли я сделать это, используя метод одного действия? И вообще, какова лучшая практика для таких случаев?

1 Ответ

0 голосов
/ 02 марта 2020

Обычно я справляюсь с этим, имея статусы в вашем состоянии следующим образом:

const initialState = {
  isPendingDBResponse: false,
  errorFromDB: "",
  data: [...] // any data sent back from the DB if it's needed
}

Тогда любой ваш компонент будет использовать что-то вроде троичного оператора для обработки различных статусов:

import React from "react";

const MyComponent = ({ isPendingDBResponse, errorFromDB, data }) => (
  <div>
    {(isPendingDBResponse)
      ? <p>Waiting on DB...</p>
      : (errorFromDB)
      ? <p>{errorFromDB}</p>
      : <p>Everything was sent successfully</p> // Display any data here if needed
    }
  </div>
)

const mapStateToProps ({ reducerName }) => {

  const { isPendingDBResponse, errorFromDB, data } = reducerName;

  return {
    isPendingDBResponse,
    errorFromDB,
    data
  }
}

export default connect(mapStateToProps)(MyComponent);
...