Домены
Краткая справка
Группировка юнитов
const domain = createDomain();
const event = domain.createEvent();
const $store = domain.createStore();
const effectFx = domain.createEffect();
const childDomain = domain.createDomain();
Доступ до юнитов
const domain = createDomain()
const {
domains,
events,
effects,
stores
} = domain.history;
for (const event of events) {
// do something with each event
}
Хуки
const domain = createDomain();
domain.onCreateEvent(event => {
// do something with event
});
domain.onCreateStore(store => {
// do something with store
});
domain.onCreateEffect(effect => {
// do something with effect
});
domain.onCreateDomain(domain => {
// do something with domain
});
Дочерние домены
const domain = createDomain()
domain.onCreateEvent(event => console.log(event))
const childDomain = domain.createDomain()
const event = childDomain.createEvent()
// event WILL be printed in console
Юзкейсы
из наших приложений
Мониторинг
function collectEffectorMetrics({ domain }) {
const { effects } = domain.history;
effects.forEach((effect) => {
countEffectFailure(effect);
measureEffectDuration(effect);
});
}
Логирование
конкретного сервиса
import { attachLogger } from 'effector-logger';
attachLogger(domain);
Массовые связи
в конкретном сервисе
const userServiceDomain = createDomain();
const logout = userServiceDomain.createEvent();
userServiceDomain.onCreateStore(store => {
store.reset(logout)
});
const $email = userServiceDomain.createStore(null);
const $username = userServiceDomain.createStore(null);
Рут
Доступ до всех юнитов в приложении
import { root } from 'effector-root';
const allEventsInTheApplication = root.history.events;
Никакой магии
// effector-root source code
import { createDomain } from 'effector';
const rootDomain = createDomain('root', {
name: 'root',
sid: 'effector-root'
})
export * from 'effector';
export {
createDomain: rootDomain.createDomain,
createEffect: rootDomain.createEffect,
createEvent: rootDomain.createEvent,
createStore: rootDomain.createStore,
rootDomain as root,
};
Никакой магии
// babel config
module.exports = {
plugins: [
[
'babel-plugin-module-resolver',
{
root: ['.'],
alias: {
effector: 'effector-root',
},
},
],
]
}
Используйте домены
с наслаждением
Домены
By Igor Kamyshev
Домены
- 196