Задать вопрос
@deantek

Как закинуть id в запрос react-query?

Здравствуйте, использую библиотеку react-query, но никак не могу понять как закинуть id в запрос

у меня есть массив с id-шками и запрос вида:

const fetchPartners = async (id: number) => {
  const { data } = await axios.get(`/api/v1/shop/partner/${id}`)

  return data
}


и сам компонент :

const PartnersPageMobile = () => {
  const history = useHistory()
  const { data: partnerData } = useShop() // здесь  я достаю id

  const part = useMemo(() => (partnerData && partnerData.partners ? partnerData.partners : []), [
    partnerData,
  ])
   
  const {data: fetchPartners, isLoading} = useQuery(['partner'], fetchPartners)  
 // тут мне нужно как-то передать id, чтобы получить массив с товарами,
 но я не понимаю как это сделать

  const Header = () => {
    return (
      <div className={s.header_container}>
        <div className={s.left}>
          <div onClick={() => history.goBack()} className={s.img_block}>
            <img loading="lazy" src="/images/icons/back-icon.svg" alt="" />
          </div>
        </div>
        <div className={s.center}>ПАРТНЕРЫ</div>
        <div className={s.right} />
      </div>
    )
  }

  return (
    <div>
      {Header()}
      <div className={s.container}>
        {part.map((partner: any) => {
          return <div className={s.partner}>ds</div>
        })}
      </div>
    </div>
  )
}

export default PartnersPageMobile


Подскажите, пожалуйста, желательно с примером
  • Вопрос задан
  • 328 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
В fetchPartners будет передано то самое значение, которое идет первым параметром в useQuery.

потому делаешь так
const fetchPartners = async (params) => {
  const id = params.queryKey[1]
  const { data } = await axios.get(`/api/v1/shop/partner/${id}`)

  return data
}

...

const {data: fetchPartners, isLoading} = useQuery(['partner', id], fetchPartners)
Ответ написан
@deantek Автор вопроса
решил через навигацию, при клике на карточку партенра в NavLink закидывал id партнера, а в самом компоненте PartnersPageMobile доставал id через
const params = useRouteMatch()
а дальше id уже передавалось в fetchPartners

с массивами id ничего мутить не надо было
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽