Реагируйте на функцию перезапуска перехватчика useDispatch. - PullRequest
0 голосов
/ 24 февраля 2020

В коде, который я использовал в примере, у меня есть форма свойства, чтобы добавить новое свойство, после сохранения его в базе данных я хочу обновить хранилище приставок новым свойством и отправить пользователя на страницу свойств, где все свойства перечислены, но я хочу сделать это после отправки (addProperty (saveProperty)), тогда я могу сделать history.pu sh ("/ properties"). Как я могу ждать там до окончания отправки sh. Я использую useDispatch от Reaction-redux.

 async function handlePropertyFormSubmit(values) {
    const savedProperty = await savePropertyGraphQlPromise(values);
    if (savedProperty) {
      dispatch(reset("property"));//reset property form
      dispatch(addProperty(savedProperty));
      //here I want to wait the dispatch finish and then send user to the properties page.
      history.push("/properties");
    }
  }

Ответы [ 3 ]

0 голосов
/ 24 февраля 2020

Вы можете создать «сигнал» с вашей отправкой - как dispatched: false и установить его в значение true, когда вы закончите sh ваш dispatch (затем сбросьте его после перенаправления, если вы собираетесь использовать это свойство в других компонентах ). Если вы используете реагирующий маршрутизатор, вы можете вместо этого визуализировать <Redirect to="yourNewURL" /> для перенаправления (сделать его условно на основе redux store state).

0 голосов
/ 24 февраля 2020

Похоже, что вы используете async / await, поэтому вы также можете использовать его для ожидания отправки.

 async function handlePropertyFormSubmit(values) {
    const savedProperty = await savePropertyGraphQlPromise(values);
    if (savedProperty) {
      await dispatch(reset("property"));//reset property form
      await dispatch(addProperty(savedProperty));

      history.push("/properties");
    }
  }

Если действие addProperty возвращает обещание (например, thunk) ), вы также можете использовать метод then.

dispatch(addProperty(savedProperty)).then(() => {
 history.push('/properties')
})
0 голосов
/ 24 февраля 2020

оберните вторую отправку с помощью setTimeout, например, firstDispatch () setTimeout (secondDispatch)

...