Изменение состояния сразу после отправки действия - PullRequest
0 голосов
/ 06 мая 2020

Я работаю над простым приложением викторины и хочу отправить действие (называемое FreeResponseSubmit ) для сохранения введенных пользователем данных (называемых searchField ) в объект ответов, а затем сбросить поле формы. Я попытался связать обещания, и пока объект ответов обновляется вводом пользователя, второе «then» не работает, как планировалось (я предполагаю, что ответ из предыдущего обещания не годится для использования), а searchField значение никогда не сбрасывается.

Являются ли обещания даже правильным путем к go на этом, или async / await - лучший маршрут? Некоторое время я ломал себе голову, пытаясь понять это (все еще ново для этих фреймворков), поэтому любая помощь приветствуется.

free-response.component:

handleClick(){
  const searchFieldPromise= new Promise((resolve, reject)=>{
      resolve(this.state.searchField);
  });
  searchFieldPromise.then((searchField)=>this.props.freeResponseSubmit(searchField))
  .then((value)=>this.setState({searchField:""}));
}

1 Ответ

1 голос
/ 06 мая 2020

logi c в методе handleClick можно упростить до следующего:

const { searchField } = this.state;
const { freeResponseSubmit } = this.props;
freeResponseSubmit(searchField);
this.setState({
  searchField:''
});

Это потому, что действие для freeResponseSubmit уже приняло бы значение из состояния вашего компонента. , таким образом выполняя любые последующие операции в redux. Следовательно, вы можете просто очистить состояние компонента.

...