0.2.1 #26
@@ -2,7 +2,7 @@ import { HttpClient } from "@effect/platform"
|
|||||||
import { Container, Heading, Text } from "@radix-ui/themes"
|
import { Container, Heading, Text } from "@radix-ui/themes"
|
||||||
import { createFileRoute } from "@tanstack/react-router"
|
import { createFileRoute } from "@tanstack/react-router"
|
||||||
import { Effect, Match, Schema } from "effect"
|
import { Effect, Match, Schema } from "effect"
|
||||||
import { Component } from "effect-fc"
|
import { Component, Result, Subscribable } from "effect-fc"
|
||||||
import { runtime } from "@/runtime"
|
import { runtime } from "@/runtime"
|
||||||
|
|
||||||
|
|
||||||
@@ -13,12 +13,15 @@ const Post = Schema.Struct({
|
|||||||
body: Schema.String,
|
body: Schema.String,
|
||||||
})
|
})
|
||||||
|
|
||||||
const Result = Component.makeUntraced("Result")(function*() {
|
const ResultView = Component.makeUntraced("Result")(function*() {
|
||||||
const result = yield* Component.useOnMountResult(() => HttpClient.HttpClient.pipe(
|
const resultSubscribable = yield* Component.useOnMount(() => HttpClient.HttpClient.pipe(
|
||||||
Effect.andThen(client => client.get("https://jsonplaceholder.typicode.com/posts/1")),
|
Effect.andThen(client => client.get("https://jsonplaceholder.typicode.com/posts/1")),
|
||||||
|
Effect.andThen(response => response.json),
|
||||||
Effect.andThen(Schema.decodeUnknown(Post)),
|
Effect.andThen(Schema.decodeUnknown(Post)),
|
||||||
Effect.tap(Effect.sleep("250 millis")),
|
Effect.tap(Effect.sleep("250 millis")),
|
||||||
|
Result.forkEffect,
|
||||||
))
|
))
|
||||||
|
const [result] = yield* Subscribable.useSubscribables(resultSubscribable)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
@@ -40,5 +43,5 @@ const Result = Component.makeUntraced("Result")(function*() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
export const Route = createFileRoute("/result")({
|
export const Route = createFileRoute("/result")({
|
||||||
component: Result
|
component: ResultView
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user