React-query, селекторы и архитектура

Я удаляю очень переплетенное глобальное состояние из нового приложения (redux / sagas / selectors) в - ›context api и response-query. В это глобальное состояние интегрировано множество селекторов, которые сейчас необходимо отредактировать. Я поместил только несколько, совмещая их с мутациями, которые генерируют необходимые данные. НО --

Каковы ваши стратегии использования селекторов с реактивным запросом?

Где вы размещаете эти селекторы, в папке компонентов или в папке селекторов, или сидите в useQuery на ответный запрос, из которого извлекаются данные?

Итак, для ясности, я использую новую функциональность селектора запросов-ответов. У моего устаревшего приложения есть селекторы глобально и в самих компонентах, и я не уверен, что это самый ясный способ ... также, особенно если у меня есть глобальная оболочка useQuery ... просто пытаюсь разобраться в архитектуре здесь.

Любая помощь приветствуется.

Примечание: я предполагаю, что у нас может быть файл селекторов (совмещенный) с функцией, но можем ли мы затем импортировать имеющийся у меня перехватчик useQuery и просто сделать это там .. в файле selectors.ts В папке функции, в которой он используется ..... ИЛИ переместите селекторы В файл ловушек оболочки useQuery.

  1. Что, если эти селекторы зависят от функции (никакой другой функции / части они не понадобятся?).
  2. Что, если эти селекторы можно использовать глобально?

Стратегии?


person james emanon    schedule 08.06.2021    source источник
comment
Вы действительно имеете в виду useMutation или useQuery, потому что только useQuery имеет селекторы…   -  person TkDodo    schedule 08.06.2021
comment
useQuery ... я редактировал. У меня была мутация в мозгу, потому что я как раз работал над одним :-)   -  person james emanon    schedule 08.06.2021


Ответы (1)


Лично я стараюсь, чтобы как можно более мелкие вещи были глобальными - в основном вещи были размещены в пределах определенной функции. Если что-то действительно должно быть доступно повсюду в приложении, скорее всего, это собственная функция. Если есть один запрос, который нужно использовать в нескольких функциях, у меня есть каталог верхнего уровня queries, где они находятся, но там действительно не так много.

Что касается селекторов: я встраиваю их в ловушку useQuery, если они мне нужны более одного раза, я извлекаю их в функцию, и если это выходит из-под контроля, я помещаю их в отдельный файл рядом с запросами, например:

- features
  - todos
    - queries.ts
    - selectors.ts

ничего особенного, просто использовать то, что рекомендует Кент С. Доддс :) https://kentcdodds.com/blog/colocation

person TkDodo    schedule 09.06.2021