Size: a a a

2021 March 11

NN

Nikita N. in ☄️ effector
да ахуенна она выглядит
источник

V

Vetro in ☄️ effector
Иван
Вообще, документация гейта выглядит немного так 👇🏿
+
источник

V

Vetro in ☄️ effector
тоже гейт тяжело переварить
источник

V

Vetro in ☄️ effector
чисто по доке если
источник

NN

Nikita N. in ☄️ effector
gate это шорткад для componentMounted, componentUnmount, componentPropsUpdated эвентов и стора componentProps
источник

V

Vetro in ☄️ effector
А зачем? Не проще ли вообще отказаться от пропсов и прокидывать данные внутрь компонентов только через useStore
источник

NN

Nikita N. in ☄️ effector
тип вместо того чтоб писать
const componentMounted = createEvent()
const componentUnmount = createEvent()
const props = createStore(null)
const isMounted = createStore(false)

isMounted.on(componentMounted, () => true)
isMounted.on(componentUnmount, () => false)
props.on(componentPropsUpdated, (_, newProps) => newProps)

useEffect(() => {
  componentMounted()
  return () => {
     componentUnmounted()
 }
}, [])

useEffect(() => componentPropsUpdated(props), [props])

ты пишешь:

const gate = createGate()

useGate(gate, props)
источник

DS

Dmitriy Shuleshov in ☄️ effector
Иван
Вообще, документация гейта выглядит немного так 👇🏿
Да она нуждается в доработке
источник

NN

Nikita N. in ☄️ effector
Vetro
А зачем? Не проще ли вообще отказаться от пропсов и прокидывать данные внутрь компонентов только через useStore
так есть кейсы когда ты просто не можешь начать работать пока не получишь необходимые пропсы от реакта аля
источник

NN

Nikita N. in ☄️ effector
const { id } = useRoute('/:id')

useGate(gate, { id })
источник

NN

Nikita N. in ☄️ effector
то есть допустим, у тебя есть react-router и эффектор логика которая получает id страницы и запрашивает по этому id страницу.
Тебе нужно во первых запрашивать только если ты на этой странице, а значит компонент замаунтен, а во вторых id ты можешь узнать только через реакт роутер который находится в контексте реакта и тут приходит gate.

Через гейт ты можешь написал логику которая запускает запрос только когда человек зашел на страницу и именно по этому id.
источник

DS

Dmitriy Shuleshov in ☄️ effector
Иван
Вообще, документация гейта выглядит немного так 👇🏿
источник

И

Иван in ☄️ effector
пнятненько
источник

V

Vetro in ☄️ effector
Nikita N.
то есть допустим, у тебя есть react-router и эффектор логика которая получает id страницы и запрашивает по этому id страницу.
Тебе нужно во первых запрашивать только если ты на этой странице, а значит компонент замаунтен, а во вторых id ты можешь узнать только через реакт роутер который находится в контексте реакта и тут приходит gate.

Через гейт ты можешь написал логику которая запускает запрос только когда человек зашел на страницу и именно по этому id.
Понял
источник

V

Vetro in ☄️ effector
спасибо
источник

NN

Nikita N. in ☄️ effector
Nikita N.
то есть допустим, у тебя есть react-router и эффектор логика которая получает id страницы и запрашивает по этому id страницу.
Тебе нужно во первых запрашивать только если ты на этой странице, а значит компонент замаунтен, а во вторых id ты можешь узнать только через реакт роутер который находится в контексте реакта и тут приходит gate.

Через гейт ты можешь написал логику которая запускает запрос только когда человек зашел на страницу и именно по этому id.
аля

guard({ source: gate.state, filter: gate.status,  trigger: getPageByIdFx })
источник

V

Vetro in ☄️ effector
короче гейт редко нужен, скорее
источник

NN

Nikita N. in ☄️ effector
ну зависит какая архитектура у приложения. У меня страницы собираются через json который прилетает от бека, все настройки естественно тоже в пропсах компонента и вот гейт у меня почти везде юзается.
источник

NN

Nikita N. in ☄️ effector
Если какой-то спа, то в случае роутера, эффектор можно напрямую привязать к history.js и запрашивать данные параллельно  вместе с рендером
источник

NN

Nikita N. in ☄️ effector
Если у тебя какой-то компонент который нужно заюзать больше одного раза на странице и у каждого такого компонента комплексная логика в эффектора. То тут легче инициализировать эффектор внутри компонента, использовать gate как точку входа для управление.
источник