Skip to content

Instantly share code, notes, and snippets.

View Kelin2025's full-sized avatar
๐Ÿ‘‹
Let him cook

Anton Kosykh Kelin2025

๐Ÿ‘‹
Let him cook
View GitHub Profile
import { createStore } from 'effector'
// Simple stores
const $todo = createStore('')
const $todos = createStore([])
// Use store.map(state => computedState)
// To create computed stores
const $todosCount = $todos.map(todos => todos.length)
const $completedTodos = $todos.map(todos => todos.filter(todo => todo.completed))
import { createEvent } from 'effector'
export const loginInputChanged = createEvent('Login input changed')
export const passwordInputChanged = createEvent('Password input changed')
export const formReset = createEvent('Form was reset')
export const submitPressed = createEvent('Submit button pressed')
export const processSubmit = createEffect('Process submit')
@Kelin2025
Kelin2025 / a.js
Last active March 19, 2019 20:42
import React from 'react'
import { useStore } from 'effector-react'
import { createStore, createEvent } from 'effector'
// events.js
const emailChanged = createEvent('Email changed')
const passwordChanged = createEvent('Password changed')
const submitPressed = createEvent('Submit pressed')
// stores.js
ะดะตั†ะตะฝั‚ั€ะฐะปะธะทะพะฒะฐะฝะฝะพัั‚ัŒ, ะดะตะบะปะฐั€ะฐั‚ะธะฒะฝะพัั‚ัŒ, ัั„ั„ะตะบั‚ะธะฒะฝะพัั‚ัŒ. ั‚ั€ะตะฑะพะฒะฐะปัั ะธะฝัั‚ั€ัƒะผะตะฝั‚, ะฟะพะทะฒะพะปััŽั‰ะธะน ัƒะฟั€ะฐะฒะปัั‚ัŒ ะดะฐะฝะฝั‹ะผะธ ะฒ ัะปะพะถะฝั‹ั… ะฟั€ะธะปะพะถะตะฝะธัั… ะฑะตะท ะพะฟะฐัะฝะพัั‚ะธ ั€ะฐะทะดัƒั‚ัŒ ะผะพะฝะพะปะธั‚ะฝั‹ะน ั†ะตะฝั‚ั€ะฐะปัŒะฝั‹ะน ัั‚ะพั€, ั ัะฒะฝั‹ะผ control flow, ะฝะพั€ะผะฐะปัŒะฝะพะน ั‚ะธะฟะธะทะฐั†ะธะตะน ะธ ะตะผะบะธะผ ะฐะฟะธ
โ€” ัั‚ะพั€ั‹ ะดะปั ะฟั€ะธะปะพะถะตะฝะธั ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะปั‘ะณะบะธะผะธ, ะฝะฐัะบะพะปัŒะบะพ ัั‚ะพ ะฒะพะทะผะพะถะฝะพ โ€” ะฝะต ะดะพะปะถะฝะฐ ะฟัƒะณะฐั‚ัŒ ะผั‹ัะปัŒ ะพ ั‚ะพะผ, ั‡ั‚ะพ ะฝัƒะถะฝะพ ะดะพะฑะฐะฒะธั‚ัŒ ะตั‰ั‘ ะพะดะธะฝ ัั‚ะพั€ ะดะปั ะบะพะฝะบั€ะตั‚ะฝั‹ั… ะฝัƒะถะด
โ€” ัั‚ะพั€ั‹ ะดะพะปะถะฝั‹ ัะฒะพะฑะพะดะฝะพ ัะพะฒะผะตั‰ะฐั‚ัŒัั โ€” ะธะดะตั ะฒ ั‚ะพะผ, ั‡ั‚ะพ ะดะฐะฝะฝั‹ะต, ะบะพั‚ะพั€ั‹ะต ะฟะพั‚ั€ะตะฑัƒัŽั‚ัั ะฟั€ะธะปะพะถะตะฝะธัŽ, ะผะพะถะฝะพ ั€ะฐัะฟั€ะตะดะตะปะธั‚ัŒ ัั‚ะฐั‚ะธั‡ะตัะบะธ, ะทะฐั€ะฐะฝะตะต ะฟะพะบะฐะทะฐะฒ ะบะฐะบ ะดะฐะฝะฝั‹ะต ะฑัƒะดัƒั‚ ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐั‚ัŒัั ะฒะพ ะฒั€ะตะผั ั€ะฐะฑะพั‚ั‹ ะฟั€ะธะปะพะถะตะฝะธั
โ€” ะฟั€ะธะฝั†ะธะฟ ั€ะฐะฑะพั‚ั‹ ะดะพะปะถะตะฝ by design ะธัะบะปัŽั‡ะฐั‚ัŒ ะฝะตะพะฑั…ะพะดะธะผะพัั‚ัŒ ะฒ reselect, ะพะฟะพะฒะตั‰ะฐั ะพะฑ ะธะทะผะตะฝะตะฝะธัั… ั‚ะพะปัŒะบะพ ั‚ะตั…, ะบะพะผัƒ ะพะฝะธ ะฝะตะพะฑั…ะพะดะธะผั‹. ัั‚ะพ ะฟะพะทะฒะพะปัะตั‚ ะฝะต ะทะฐะดัƒะผั‹ะฒะฐั‚ัŒัั ะพ ั‚ะพะผ, ั‡ั‚ะพ ัƒ ั‚ะตะฑั ะฑัƒะดะตั‚ ั‚ั€ะธะณะณะตั€ะธั‚ัŒัั ะฒัั‘ ะฟั€ะธะปะพะถะตะฝะธะต ะตัะปะธ ั‚ั‹ ะทะฐั…ะพั‡ะตัˆัŒ ะฒั‹ะฝะตัั‚ะธ ัั‚ะตะนั‚ ะผะพะดะฐะปะบะธ ะธะท ั€ะตะฐะบั‚ะฐ. ะฟะพ ัะพะฒะผะตัั‚ะธั‚ะตะปัŒัั‚ะฒัƒ ัั‚ะพ ะพะทะฝะฐั‡ะฐะตั‚ ั‡ั‚ะพ ะฟั€ะธะปะพะถะตะฝะธั ะธะทะฑะฐะฒะปะตะฝั‹ ะพั‚ ะฟั€ะพะฑะปะตะผ ั ะฟะตั€ั„ะพะผะฐะฝัะพะผ, ะฒะพะทะฝะธะบัˆะธะผ ัƒ react-redux ะฟั€ะธ ะฟะตั€ะตั…ะพะดะต ะฝะฐ ะบะพะฝั‚ะตะบัั‚
โ€” ะฒะพะทะผะพะถะฝะพัั‚ัŒ, ะผะตัั‚ะพ, ะธ ัะฟะพัะพะฑ ะฒั‹ะฝะตัั‚ะธ ะปัŽะฑัƒ
import nocatch from 'async-nocatch'
const myFetch = nocatch(fetch)
const { success, result } = await myFetch('http://api.github.com/users')
if (success) {
console.log('Done', result)
} else {
console.log('Fail', result)
}
<template>
<!-- Will add/remove .small if the width is less / greater -->
<div class="post__item" v-responsive="{ small: el => el.width <= 500 }">
<img class="post__image" :src="post.image" />
<div class="post__text">{{post.text}}</div>
</div>
</template>
<script>
import { ResponsiveDirective } from "vue-responsive-components"
const observer = new ResizeObserver(entries => {
entries.forEach(entry => {
const cr = entry.contentRect;
console.log('Element:', entry.target);
console.log(`Element size: ${cr.width}px x ${cr.height}px`);
console.log(`Element padding: ${cr.top}px ; ${cr.left}px`);
})
})
observer.observe(someElement)
@media only screen and (max-width: 576px) {
.post__item {
flex-direction: column;
}
.post__image {
flex: 0 auto;
height: auto;
}
}
.post__item {
display: flex;
}
.post__image {
flex: 0 0 200px;
height: 200px;
}
<template>
<Responsive :breakpoints="{
small: el => el.width <= 500
}">
<div slot-scope="el" :class="['post__item', { small: el.is.small }]">
<img class="post__image" :src="post.image" />
<div class="post__text">{{post.text}}</div>
</div>
</Responsive>
</template>