Комментарии 12
Иммутабильный, не реактивный. Ужас. Очередная бесполезная поделка.
Я понял. (Не хочу быть душным и не имею в виду конкретно создателей Teaful) Это выпускники курсов по реакту берут свои учебные наработки ("создай свой редакс за час") и релизят по сто штук в месяц
memo не решает проблему ре-рендеринга?
Полагаю, поддержки Type Script нет и не предвидится.
А что на счёт поддержки TypeScript?
Безотносительно самой библиотеки. Касаясь только КДПВ (картинки для привлечения внимания) статьи:
Нет я конечно понимаю, что всю эту библиотеку одним useState
не заменить, но неужели нельзя было без вот этих нелепых манипуляций обойтись?
Чтобы
cart.price
всегда был вычисленным значением другого свойства, например изcart.items
, используем функциюonAfterUpdate
:
Оу, каскадные обновления стейта! Вроде бы известный антипаттерн (по крайней мере в МобХ автор настоятельно советует вместо этого использовать компутеды).
Прикольно представить, как это прекрасно всё отмасштабируется на плохоньком реальном сторе в пару сотен входящих смысловых единиц данных и пару же сотен — вычисленных.
Не говоря уж про то, что это не ленивые вычисления. Ну право слово, почему бы и не посчитать сразу всё, вне зависимости, надо ли оно нам, или не надо. Компутер железный, он для этого и создан.
Заключение. Преимущество fragmented-store заключается в том, что она работает с React Context и нет необходимости создавать много контекстов вручную.
Признаться сама идея использовать контексты для каждой отдельной взятой переменной мне показалась слишком уж бредовой. Я полез в исходный код. Там нет никаких контестов. Там просто another one реализация observable, но очень очень примитивная, и очень обильно эксплуатирующая Proxy. Вот все её зависимости:
import {useEffect, useReducer, createElement} from 'react';
Как видите тут нет никакого useContext
и createContext
. У неё своя собственная реализация observable. По сути это просто ещё один глобальный store с forceRerender-ом.
А теперь посмотрим на самую первую версию:
import React, { useState, useContext, createContext } from "react";
Вот в ней и были все эти бредовые потуги с контекстами на каждую переменную. Благо они ушли в небытие.
Рекомендация автору (статьи на хабре) — удалить этот шедевр.
Teaful — крошечная, простая и мощная библиотека управления состояниями React