Skip to content

Instantly share code, notes, and snippets.

View alshdavid's full-sized avatar

David Alsh alshdavid

View GitHub Profile
import { Component } from '@angular/core';
import * as item from './store'
const store = item.createStore()
@Component({
selector: 'my-app',
template: `
<main>
<button (click)="add()">Add</button>
type Thing = {
data: string
printData: () => void
}
const printData = (t: Thing) => () => {
console.log(t.data)
}
const createThing = (): Thing => {
<zip-button
theme="primary"
type="inverted"
gradient="400"
weight="bold">
Click Me!
</zip-button>
<!-- You can also bind to the enum for type safety -->
<zip-button
const todoInstance = CreateTodoList()
const App = () => {
const [todos, setTodos] = useState([])
useEffect(() => {
const subscription = todoInstance.onUpdate.subscribe(setTodos)
return () => subscription.unsubscribe()
}, [todoInstnace])
export const App = () => {
const { todoInstance } = useContext(StateContext)
const todos = useSubscribable(todoInstance.onUpdate, [])
return <div>
<LogButton />
<div>
{ todos.map(todo => <div>{todo}</div>)}
</div>
</div>
const CreateTodoList = () => {
const todos = []
const add = (todo) => {
todos.push(todo)
}
return {
todos,
add
import { useSubscribable } from 'use-subscribable'
const todoInstance = CreateTodoList()
const App = () => {
const todos = useSubscribable(
todoInstance.todos, // Observable
todoInstance.todos.getValue() // Default value
)
const CreateTodoList = () => {
const todos = new BehaviorSubject([])
const add = (todo) => {
// this is kind of like "setState"
todos.next([
...todos.getValue(),
todo
])
}
const todoInstance = CreateTodoList()
todoInstance
.todos
.subscribe(
todosArray => console.log(todosArray)
)
todoInstance.add('one')
todoInstance.add('two')
export const randomString = () =>
Math.random().toString(36).substring(7)
export type callback<T = any> = (value: T) => void
export interface Subscription {
unsubscribe: () => void
}
export class ObserverWithState<T = any> {