Skip to content

Instantly share code, notes, and snippets.

@wickedev
Created June 27, 2020 12:19
Show Gist options
  • Save wickedev/bb1908d4290de87f265208eaf585f782 to your computer and use it in GitHub Desktop.
Save wickedev/bb1908d4290de87f265208eaf585f782 to your computer and use it in GitHub Desktop.
export function TodoView() {
const state = useState<State>(State.PENDING)
const handleCreateTask(e: React.SyntheticEvent) {
// TODO
}
return <div>
<ol>
{tasks.map((task) => <Task task={task} />)}
</ol>
<TaskForm handleCreateTask={handleCreateTask} />
</div>
}
export class TodoViewModel {
constructor(
private readolny todoApi: TodoApi,
) {}
@observable public state: State = State.PENDING
@observable public tasks: ITask[] = []
@asyncAction
public *fetchTasks() {
this.state = State.PENDING
try {
const res = yield todoApi.fetchTasks(task)
this.todos = res.data
this.state = State.DONE
return Result.ok()
} catch (e) {
this.state = State.ERROR
return Result.fail(e)
}
}
@asyncAction
public *createTask(task: ITask) {
// TODO
}
@asyncAction
public *deleteTask(id: string) {
// TODO
}
...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment