Нельзя использовать ключевое слово «ожидание» вне асинхронной функции - PullRequest
0 голосов
/ 22 сентября 2019

В настоящее время я хочу внедрить Redux в свою функцию, чтобы она сохранялась в исходном состоянии.Для этого я должен использовать метод отправки, который вызывает действие внутри функции.Таким образом, ожидаемый результат заключается в том, что я могу отправить response.data.results с помощью Redux, поэтому на основе этого результата я могу добавить кнопку «Мне нравится» на каждом изображении.Но это проблема, которая будет решена позже, а сейчас я хочу провести рефакторинг кода, чтобы функция отправляла данные на основе переданных ключевых слов или букв.Но console.log показывает ошибку:

Невозможно использовать ключевое слово 'await' вне асинхронной функции

  onSearchSubmit = async term => {  
    return(dispatch) => {
      const response = await unsplash.get('/search/photos', {
        params:{ query: term },
        //use the path on unsplash for image searching
      });
      
      dispatch(fetchImages(response.data.results));
      // this.setState({ images: response.data.results });
    }
    
  }

  render() {
    return (<div className="ui container" style={{marginTop:'10px'}}> 
      <SearchBar onSubmit={this.onSearchSubmit}/>
      {/* <ImageList images={this.state.images}/> */}
    </div>);
  }

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019

await, на который ссылается ваша ошибка, находится в анонимной лямбда-функции (dispatch) => {... НЕ onSearchSubmit.Сделайте эту лямбду асинхронной, и все должно быть в порядке.

0 голосов
/ 22 сентября 2019
return(dispatch) => {
  const response = await unsplash.get('/search/photos', {
    params:{ query: term },

Вы возвращаете не асинхронную функцию и вызываете ожидание внутри нее.Попробуйте сделать это асинхронно:

return async (dispatch) => {
  const response = await unsplash.get('/search/photos', {
    params:{ query: term },
...