Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.08.2020, 18:57
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Как с помощью useEffect сделать запрос по нажатию на кнопку
Как с помощью useEffect сделать запрос по нажатию на кнопку и чтобы при повторном нажатии не делался один и тот же запрос пока не изменили состояние в инпут? Вставлял в зависимость состояние input, но всё равно сразу несколько запросов делается.
useEffect(() => {
    let query = () => {  
      return (
        {
          method: 'POST',
          headers: {"Content-Type": "application/json"},
          body: JSON.stringify({
              query: `query getLaunches($launch_year: String) {
                launchesPast(limit: 10, find: {launch_year: $launch_year}) {
                  mission_name
                  launch_date_local
                  launch_site {
                    site_name_long
                  }
                  links {
                    flickr_images
                  }
                  rocket {
                    rocket_name
                  }
                  id
                }
              }`, variables: {
                launch_year: props.inputText
              }   
          }), 
        }
      )
    }
    fetch('https://api.spacex.land/graphql/', query())
    .then(res => res.json())
    .then(data => console.log(data.data.launchesPast)) 
    setIsSending(props.inputText) 
  }, [props.inputText])
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2020, 20:47
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

useEffect здесь никаким боком.
Запрос надо делать в хендлере клика кнопки.
Флажок о загрузке ставить и снимать либо в useState (если надо показать, что идёт загрузка), либо в ячейке useRef (если показывать не надо).
Загруженные данные положить в стейт.
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2020, 20:50
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

А вообще лучше не увлекаться логикой в хуках. Всякую асинхронщину удобнее в моделях гонять, лучше всего мобиксовских
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать задержку при закрытии модального окна нажатием на кнопку? Alex_White Общие вопросы Javascript 1 06.02.2020 00:34
Как сделать чтоб запрос повторялся до победи? nolik2000 Общие вопросы Javascript 3 02.08.2016 11:12
Как сделать рабочую кнопку очистки полей? bogdanlantsuta Общие вопросы Javascript 1 14.06.2016 08:17
Как сделать редирект или заблокировать кнопку в скрипте... allanmiln AJAX и COMET 5 16.02.2013 21:13
Как сделать статичную шапку сайта с помощью JavaScript Strekodza Общие вопросы Javascript 4 19.12.2012 20:24