class Fetcher[F[_], P, E, T] extends AnyRef
Fetch data and render a child with a fetch status. Child can process the
data and typically memoizes it if it transforms it e.g. sorts it or converts
the values. Fetch provides a generic F
that must be an Effect
so a
result can be "fetched." You can create the Fetcher and provide the fetch
"recipe" in F
as a parameter or let the child initiate a fetch--you have a
choice. Allowing the child to initiate a "fetch" makes the API messy. See
this
[blog](https://appddeevvmeanderings.blogspot.com/2018/12/abstracting-react-scalajs-react-fetcher.html)
for more details on how to define your Runner. Any type of cancellation
aspect should be handled in Runner.
Once you define your element by creating an instance of this class, you will
want to import the FetchState types. Import the dependent value types using
import myFetcher._
.
- F
Fetch effect. Produces a P. F may also hold an error, an implied Throwable. There are no constraints on F in this class because Runner expresses an optionally synchronous computation.
- P
Result inside F. Generally can be broken out into E and T i.e. P is often a coproduct of E and T. P exists in the type signature so that we do not have to add a context constraint to F.
- E
Error data to be delivered to child. It is often a Throwable but is dependent on the effect you are using and how you map your errors from that effect e.g. convert a Throwable to another type.
- T
Resulting data to be delivered to child.
- To do
Bake in cancellable when unmounting.
- Alphabetic
- By Inheritance
- Fetcher
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Fetcher(Name: String)
Type Members
- case class Error(content: E) extends FetchState with Product with Serializable
Load resulted in an error.
- type FetchCallback = (F[P]) => Unit
Initiate a fetch for P.
- sealed trait FetchState extends AnyRef
Load state passed to a child.
- trait Props extends Object
- Annotations
- @JSType()
- type Runner = (F[P]) => ((Either[E, T]) => Unit) => Unit
Given a fetch request
F[P]
and a callback, run the F and call the callback to process the results.Given a fetch request
F[P]
and a callback, run the F and call the callback to process the results. The results have to be split into an error part and a "value" part so that the proper fetch state can be passed to the child. - case class Success(item: T) extends FetchState with Product with Serializable
Load was successful, hold item.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply(props: Props): ReactNode
Provide data loading status to a child.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- val render: (Props) => ReactNode
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- case object Fetching extends FetchState with Product with Serializable
Loading still in progress.
- case object NotRequested extends FetchState with Product with Serializable
Initial state until a fetch request is made.