All streams
Search
Write a publication
Pull to refresh

Comments 10

У Фьюзора нет своего стейт менеджера, но можно интегрировать любую библиотеку примерно такой функцией:

import { update } from "@fusorjs/dom"; // updates component
const connectComponentToDom = (self) => anyObservable.subscribe(() => update(self)); // => unsubscribe()

// usage:
const x = <SomeComponent mount={connectComponentToDom} />

Как вашу библиотеку можно было бы интегрировать во Фьюзор?

Меньше шаблонов. Разработка становится быстрее, предсказуемее и приятнее.

Разрешите не согласится.

const [name, setName] = userStore.useField("user.name");
const [age, setAge] = userStore.useField("user.age");

userStore.useEffect(["user.age"], ([age]) => {
  userStore.$.user.name = "qtpy"; 
});
const userStore = createReactStore(initialState, [], {
  customLimitsHistory: ($) => [
    ["user.age", 5],
    [(t) => $.items[t(1)], 3],
  ],
});
useStore([(t) => $.board[t(row)][t(col)]])
const store = createObservableStore<AppState, DepthPath>(initialState, [], {
  customLimitsHistory: ($) => [
    ["user.age", 5],
    [(t) => $.items[t(1)], 3],
  ],
});

createObservableStore — это реактивная система нового поколения

Увы, но нет.


Я показывал несколько вариантов и специально сделал так чтобы у разработчиков был выбор чтобы каждый мог использовать ту парадигму обновления состояния, которая ближе к их архитектурным предпочтениям или привычкам команды — будь то прямые мутации через proxy, более декларативные обновления через строковые пути с поддержкой typescript, или гибкие селекторы, обеспечивающие точечный контроль.

Вы можете свойствами на прямую взаимодействовать через proxy store.$.user.age = 5 или через систему подписок при помощи строковых путей store.update('user.age', 5) или же при помощи селекторов как в простонародье называется sotre.update(() => store.$.user.age, 4) или store.update((t) => store.$.items[t(index)] , 2)

store.$.user.age = 5

Напрямую это так: store.user.age = 5

store.update('user.age', 5)

Лишний вызов функции + непривычный способ обращения к свойству + высокая вероятность опечататься.

sotre.update(() => store.$.user.age, 4)

Лишний вызов уже двух функций + лишний чужеродный $.

Меньше шаблонов, разработка становится быстрее, предсказуемее и приятнее тогда, когда вы не заставляете разработчика использовать сомнительные конструкциии/обертки для того, что бы удовлетворить потребности вашей «реактивной системы нового поколения».

На счет  store.user.age = 5 - разработчики сами должны решать, работать ли напрямую с proxy-объектом store.$ или использовать систему подписок.

Я ни раз писал о типобезопасных строках в этой статье , в оф. документации все расписано @qtpy/state-management-observable  .
если вы опечатаетесь store.update('user.agesdfsdfs', 5) вам выдаст ошибку

спасибо большое за оценку - добавил изменения в селекторе , уже запушил и документации подправил, сейчас эту статью изменю:


//до:
store.get((t) => store.$.board[t(row)][t(col)])
store.get(() => store.$.user.age)

//после:
store.get(($, t) => $.board[t(row)][t(col)])
store.get(($) => $.user.age) 

и в правду так лучше стало , а то "store" может иметь любое название , и тогда из-за длинного название плохая будет читабельность.

это реактивная система нового поколения

какие громкие слова) это видимо от незнания? ведь уже 3 года существует обёртка над сигналами от команды Preact, которая даёт возможность при изменении состояния сигнала перерисовать значение конкретного тега в разметке(всех тегов, которые ссылаются на сигнал), не тревожа ничего вокруг никакими ререндерами. и не понадобятся никакие createReactStore и прочий бойлерплейт

Да я с вами полностью солидарен однозначно что сигналы это очень хороший инструмент и удобный , и на счет громких слов. Но не все его могут использовать или интегрировать без последствий. Некоторые разработчики — включая команду React — считают, что сигналы нарушают базовые принципы реактивной архитектуры, особенно при конкурентном рендеринге. Есть опасения, что они ломают однонаправленный поток данных, напоминают старые решения вроде KnockoutJS и могут усложнить масштабирование крупных приложений. Поэтому, несмотря на свою эффективность, сигналы подходят далеко не всем — особенно в проектах с высокими требованиями к стабильности и предсказуемости.

Sign up to leave a comment.

Articles