Как стать автором
Обновить
0
0
Дмитрий @finnish

Пользователь

Отправить сообщение

Сейчас начинается активно пиариться TanStack Start - альтернатива Next.js.

Нет, библиотека этого не требует.

Хуки внутри компонента могут располагаться везде, если последовательность их вызовов между рендерами постоянна. Ниже анти-пример, никогда так не пишите:

const BadComponent = () => {
  const staff = [
    getSomething({user: useUser()}),
    useSomethingElse(useQuery({})),
  ];
  return <>{useLayout(staff)}</>;
}

А вот внутри submitHandler хуку не место.

Вот наивная реализация. Специально спрятал useQuery в массив, чтобы было чуть проще проводить параллели.

const submitHandler = async (formData) => {
  const responses = [
    useQuery({
      queryKey: '0',
      queryFn: () => service1.fetchData(formData.fieldValue1),
    }),
    useQuery({
      queryKey: '1',
      queryFn: () => service2.fetchData(formData.fieldValue2),
    }),
    useQuery({
      queryKey: '2',
      queryFn: () => service3.fetchData(formData.fieldValue3),
    }),
  ];

  const data = useQuery({
    queryKey: '3',
    queryFn: () => service4.fetchData(response[0].data),
    enabled: response[1].data?.isExistSomeData,
  });

  if (responses[1].data?.isExistSomeData) {
    if (!data.isLoading) {
      service5.showSuccess(data.data);
    }
  } else {
    service5.showFailure();  
  }
};

Однако, вызов showSuccess и showFailure ошибочно соседствуют рядом с декларативным подходом react-query, у этого кода могут быть проблемы.

Библиотека привлекается меня несколькими критериями: малый вес, скорость работы, встроенный State Manager. Кстати, MobX может работать с SolidJS, но надо ли?..

Для работы с ней нужно лишь слегка изменить мышление из React-парадигмы "ререндеры + деструктуризация" в сторону "один рендер + чтение пропсов из объекта". Да, немаловажным является то, что компоненты SolidJS рендерятся только один раз - сразу отпадает необходимость в useMemo, useCallback, useRef. Несмотря на отсутствие хуков, жизненный цикл в каком-то виде присутствует, есть onMount и onCleanup (aka onUnmount). Эффекты тоже достаточно просто реализованы.

Хоть библиотек для него и мало, мне их оказалось достаточно, чтобы сделать несколько небольших проектов.

flutter_solidart имеет схожий API.

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность