169 похожих чатов

Представьте себе ванильный джаваскрипт... данные у вас хранятся в переменных

(примитивы всякие, объекты), вы пишете императивный код (ифы, циклы, свичи), гоняете эти данные по функциям, создаёте новые переменные. Но вы не можете подписаться на переменные, на их изменения, не можете отследить поток данных между ними.

Допустим у вас есть объект с данными и методы, которые эти данные изменяют. Вы хотите создать интерфейс для пользователя, чтобы показать эти данные и дать возможность с ними взаимодействовать. Вы берете реакт, создаёте компонент на jsx и выводите там свои данные, на кнопки навешиваете методы, и рендерите компонент на странице. Но о ужас 😱, пользователь кликает на кнопки, данные в объекте меняются, но данные на странице не обновляются. Вам нужно просто перерендерить компонент, если данные изменились, но данные лежат в обычном джаваскрипт объекте, вы не можете на него подписаться, вы также не можете простым способом отследить вызовы ваших функций. Что же делать?

Используйте эффектор! Возьмите вместо переменных - сторы, в которых вы можете хранить ваши данные (как в переменных), вместо обычных функций - ивенты, которые вы можете запускать (как ваши методы), и вместо обычных асинхронных функций - эффекты, которые позволяют вам обрабатывать ваши данные асинхронно (как промисы). Теперь все данные и методы являются отслеживаемыми. Нужно подписаться на обновление данных в компоненте? Легко! useStore и пользователь видит изменения.

Изучи эффектор! Поднимись на новый уровень программирования! 🙂

2 ответов

5 просмотров

я бы не сказал что это только подписка на данные,тут скорее важно что есть sample,forward тд,короче взаимодейтвие намного удобней и его можно описать статические,декларативные связи

blogPostBody .replace(“эффектор”, “mobx”) .replace(“ивенты”, “actions”) .replace(“useStore”, “observer”)

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта