Не удается обновить контекст после запроса Ax ios POST, и я получаю ошибку при рендеринге - PullRequest
0 голосов
/ 27 марта 2020

Я делаю заявку в интернет-магазине и после того, как пользователь отправляет свою корзину, я отправляю запрос в бэкэнд. В бэкэнде есть заказ, созданный на основе этой информации, и созданный заказ отправляется обратно. Когда я получаю этот заказ из бэкэнда, я хочу обновить общий контекст (состояние) с помощью этой информации о заказе.

// CartState.js
  const sendOrder = async (order, person) => {
    const body = JSON.stringify({ order, person });
    // CALL API
    try {
      const response = await API.post('/orders', body);
      const { data } = response;
      dispatch({ type: SEND_ORDER, payload: data });
    } catch (err) {
      console.log(err);
    }
  };

 case SEND_ORDER: {
      return {
        ...state,
        order: action.payload,
        items: state.items.map(item => {
          item.count = 0;
          return item;
        })
      };

Но когда я получаю статус 200 с новым заказом назад и нужным объектом ( в отношении журнала консоли, который я сделал) контекст не обновляется.

{
payment_status: "not paid"
delivery_moment: "As soon as possible"
items: [{…}]
_id: "5e7e3c842c2a0236a42b09d2"
person: {name: "Dennis Klarenbeek", email: "dennis.klarenbeek@icloud.com", phone: "0622225086", street: "Glindhorst, 52", city: "EDE", …}
vendor: "5e7de28d6514432ed7a71787"
created: "2020-03-27T17:48:52.495Z"
order_id: 10034
__v: 0
}

В части рендеринга рэка он постоянно говорит: не может деструктурировать что-либо - ноль. И ноль - начальное состояние заказа.

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

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

В функции, где я вызывал внутренний сервер, не было асинхронного / ожидающего или обещанного дескриптора. Таким образом, новый компонент отображается перед обновлением состояния. С добавлением asyn c / await новый компонент будет отображаться при обновлении состояния заказа!

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

Cannot destructure something is null. And null is the initialstate of order.

Я полагаю, вы установили начальное значение state равным null?

Я думаю, вам нужно установить начальное значение state равным {} (пустой объект), чтобы оно могло быть обработано оператором распространения / деструктуры (...state)

...