Перейти к основному содержимому
import {createEvent, createStore, createEffect, sample} from 'effector'
const nextPost = createEvent()
const getCommentsFx = createEffect(async postId => {
const url = `posts/${postId}/comments`
const base = 'https://jsonplaceholder.typicode.com'
const req = await fetch(`${base}/${url}`)
return req.json()
})
const $postComments = createStore([])
.on(getCommentsFx.doneData, (_, posts) => posts)
const $currentPost = createStore(1)
.on(getCommentsFx.done, (_, {params: postId}) => postId)
const $status = combine(
$currentPost, $postComments, getCommentsFx.pending,
(postId, comments, isLoading) => isLoading
? 'Загрузка поста...'
: `Пост ${postId} имеет ${comments.length} комментариев`
)
sample({
source: $currentPost,
clock: nextPost,
fn: postId => postId + 1,
target: getCommentsFx,
})
$status.watch(status => {
console.log(status)
})
// => Пост 1 имеет 0 комментариев
nextPost()
// => Загрузка поста...
// => Пост 2 имеет 5 комментариев

Преимущества

Типизация

Типизация

Поддержка TypeScript в комплекте поставки

Независимость от фреймворков

Независимость от фреймворков

Работает с любыми UI и серверными фреймворками

Удобство в разработке

Удобство в разработке

Логичный API и отзывчивое сообщество

Производительность

Производительность

Статическая инициализация улучшает производительность

Малый размер

Малый размер

Эффектор - компактная библиотека и поддерживает tree-shaking

Чистый, предсказуемый javascript

Чистый, предсказуемый javascript

Никаких прокси и классов

Компании уже использующие эффектор

Aviasales
Health Samurai
Raiffeisen Bank Russia
UNICEF (United Nations Children’s Fund)
Sber
Avito
MTS
Docsvision
Okoo
space307
REDMADROBOT
Junto
automation hero
Radity
Global CTO Forum
StellarX
STM Labs
TenPixls
Uptarget
Travelpayouts
смартомато
Фоксфорд
Хотите попасть в этот список? Расскажите нам