Реагировать использоватьEffect asyn c предупреждение? - PullRequest
1 голос
/ 08 марта 2020

Я пытаюсь избавиться от предупреждения React "Похоже, вы написали useEffect (asyn c () => ...) или вернули Promise. Вместо этого напишите в своем эффекте функцию asyn c и немедленно позвоните ".

Я ссылаюсь на эту статью https://www.robinwieruch.de/react-hooks-fetch-data, чтобы попытаться избавиться от него, но, увы, не могу.

Мой useEffect:

  useEffect(() => api.getAllPokemon(setResponse),[])

И моя функция api.getAllPokemon asyn c, которую я определил в импортированном файле:

const api = {}

api.getAllPokemon = async (cb) => {
  await fetch('http://localhost:8080/pokemon', {
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    }
  })
  .then(async (pokemon) => await pokemon.json())
  .then((pokemon) => pokemon.rows.map(({ name }) => name))
  .then(pokemon => cb(pokemon))
};

export default api;

1 Ответ

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

useEffect может возвращать только функцию очистки или ничего. В вашем случае добавьте скобки к вашей функции стрелки или используйте обычный синтаксис функции, чтобы избежать возврата Обещания:

useEffect(() => {
  api.getAllPokemon(setResponse)
}, [])

или

useEffect(function () { 
  api.getAllPokemon(setResponse) 
}, [])
...