Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 210новых вакансий за сутки·93 612вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 266
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

DevOps и инфраструктура

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

Аналитика и данные

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

Другие направления

  • Проджект-менеджер620
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме tRPCВсе вопросы
tRPCMiddleТеория

Что такое клиент createTRPCReact и как он интегрируется с React Query?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

createTRPCReact создаёт типизированный набор React-хуков (useQuery, useMutation и др.), которые под капотом делегируют вызовы React Query, сохраняя полную end-to-end типизацию процедур сервера.

Минимальная интеграция

// lib/trpc.ts
import { createTRPCReact } from '@trpc/react-query';
import type { AppRouter } from '../server/router';

export const trpc = createTRPCReact<AppRouter>();
// app/providers.tsx
'use client';
import { useState } from 'react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { httpBatchLink } from '@trpc/client';
import { trpc } from '../lib/trpc';

export function Providers({ children }: { children: React.ReactNode }) {
  const [queryClient] = useState(() => new QueryClient());
  const [trpcClient] = useState(() =>
    trpc.createClient({
      links: [
        httpBatchLink({
          url: '/api/trpc',
        }),
      ],
    })
  );

  return (
    <trpc.Provider client={trpcClient} queryClient={queryClient}>
      <QueryClientProvider client={queryClient}>
        {children}
      </QueryClientProvider>
    </trpc.Provider>
  );
}
// components/UserCard.tsx
'use client';
import { trpc } from '../lib/trpc';

export function UserCard({ id }: { id: number }) {
  const { data, isLoading, error } = trpc.user.getById.useQuery({ id });

  if (isLoading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;

  return <div>{data?.name}</div>;
}

Что такое createTRPCReact

createTRPCReact — фабрика из пакета @trpc/react-query, которая принимает тип вашего AppRouter и возвращает объект trpc с проксированными хуками. Каждый хук (например, trpc.user.getById.useQuery()) — это тонкая обёртка над соответствующим хуком React Query (useQuery, useMutation, useInfiniteQuery), но со статически выведенными типами входных и выходных данных.

Как это работает внутри

При вызове trpc.user.getById.useQuery({ id: 1 }) tRPC:

  • Формирует уникальный queryKey вида [['user', 'getById'], { input: { id: 1 }, type: 'query' }].
  • Создаёт queryFn, которая отправляет HTTP-запрос (GET по умолчанию для query, POST для mutation) через настроенный httpBatchLink или другой link.
  • Передаёт всё это в стандартный useQuery из @tanstack/react-query.

Таким образом, весь кэш, инвалидация, дедупликация и фоновые рефетчи остаются в зоне ответственности React Query — tRPC только добавляет типизацию и сериализацию.

Доступ к нативным опциям React Query

Все опции useQuery и useMutation из React Query передаются вторым аргументом без изменений:

const { data } = trpc.posts.list.useQuery(
  { limit: 10 },
  {
    staleTime: 60_000,
    refetchOnWindowFocus: false,
    select: (d) => d.items,
  }
);

Подводные камни

  • Два экземпляра QueryClient. Если создать QueryClient вне useState, при HMR в Next.js он пересоздаётся и кэш сбрасывается.
  • trpc.Provider и QueryClientProvider должны получать один и тот же экземпляр queryClient. Если передать разные, мутации и инвалидация перестанут работать корректно.
  • queryKey генерируется автоматически и включает сериализованный input. Любое изменение структуры input-объекта — это новый ключ, что может вызвать лишние запросы.
  • Серверные компоненты (RSC) несовместимы с хуками tRPC — в RSC нужно использовать createCaller или прямые вызовы процедур на сервере.
  • Версия @tanstack/react-query должна совпадать с той, что ожидает @trpc/react-query. Конфликты peer deps — частая причина ошибок runtime.
  • Batching объединяет запросы за один тик. Если компонент делает несколько useQuery, они попадут в один HTTP-запрос, что хорошо для производительности, но затрудняет отладку в DevTools.

Частые вопросы на собеседовании

  • Чем tRPC отличается от REST и GraphQL? Когда стоит выбрать tRPC вместо них?
  • Как реализовать защищённые процедуры (protected procedures) с помощью middleware и context?
  • Как добавить валидацию входных данных к процедурам tRPC с помощью Zod?
  • В каких типах frontend-проектов tRPC даёт реальный выигрыш, а где будет избыточен или неудачен?

Типичные ошибки

  • Смешивать «createTRPCReact» с похожим механизмом без критерия выбора.
  • Игнорировать риск: неверно оценить границы применения темы «createTRPCReact» и получить хрупкое решение.
  • Показывать только синтаксис и не объяснять поведение в runtime или сборке.

Что проверяет интервьюер

  • Объясняет React hooks wrapper поверх tRPC client и TanStack React Query.
  • Показывает на примере, как работает: createTRPCReact<AppRouter>() генерирует typed hooks для процедур, а кэширование, retries, invalidation и stale state делегируются React Query.
  • Называет production-нюанс и граничный случай для темы «createTRPCReact».

Как вы знаете этот вопрос?

Проверить себя по теме tRPC →

Источники

  • https://trpc.io/docs/client/react/setup

Связанные темы

tRPCfrontend-dataReact

Вакансии с этим навыком

React вакансии
  • Summer 2027 T-Ads Software Engineering Internship
  • Senior Solutions Engineer
  • Senior Software Engineer - Java/React
  • Principal Software Engineer
  • Staff Software Engineer, Full-Stack (Arsenal 2)