React.Halo
- Package
- purescript-react-halo
- Repository
- robertdp/purescript-react-halo
Re-exports from React.Halo.Component
#ComponentSpec Source
type ComponentSpec hooks props ctx state action m = { context :: props -> Render Unit hooks ctx, eval :: Lifecycle props ctx action -> HaloM props ctx state action m Unit, initialState :: props -> ctx -> state, render :: { context :: ctx, props :: props, send :: action -> Effect Unit, state :: state } -> JSX }
#component Source
component :: forall hooks props ctx state action. String -> ComponentSpec hooks props ctx state action Aff -> Component props
Build a component by providing a name and a Halo component spec.
Re-exports from React.Halo.Internal.Control
#HaloM Source
newtype HaloM props ctx state action (m :: Type -> Type) a
The Halo evaluation monad. It lifts the HaloF
algebra into a free monad.
props
are the component propsctx
is some component contextstate
is the component stateaction
is the set of actions that the component handlesm
is the monad used during evaluationa
is the result type
Instances
Functor (HaloM props ctx state action m)
Apply (HaloM props ctx state action m)
Applicative (HaloM props ctx state action m)
Bind (HaloM props ctx state action m)
Monad (HaloM props ctx state action m)
(Semigroup a) => Semigroup (HaloM props ctx state action m a)
(Monoid a) => Monoid (HaloM props ctx state action m a)
MonadTrans (HaloM props ctx state action)
(MonadEffect m) => MonadEffect (HaloM props ctx state action m)
(MonadAff m) => MonadAff (HaloM props ctx state action m)
MonadState state (HaloM props ctx state action m)
MonadRec (HaloM props ctx state action m)
(MonadAsk r m) => MonadAsk r (HaloM props ctx state action m)
(MonadTell w m) => MonadTell w (HaloM props ctx state action m)
(MonadThrow e m) => MonadThrow e (HaloM props ctx state action m)
Parallel (HaloAp props ctx state action m) (HaloM props ctx state action m)
#HaloAp Source
newtype HaloAp props ctx state action (m :: Type -> Type) a
The Halo parallel evaluation applicative. It lifts HaloM
into a free applicative.
props
are the component propsctx
is some component contextstate
is the component stateaction
is the set of actions that the component handlesm
is the monad used during evaluationa
is the result type
Instances
#unsubscribe Source
unsubscribe :: forall props ctx state action m. SubscriptionId -> HaloM props ctx state action m Unit
Cancels the event subscription belonging to the SubscriptionId
.
#subscribe' Source
subscribe' :: forall props ctx state action m. (SubscriptionId -> Emitter action) -> HaloM props ctx state action m SubscriptionId
Same as subscribe
but the event-producing logic is also passed the SuscriptionId
. This is useful when events
need to unsubscribe themselves.
#subscribe Source
subscribe :: forall props ctx state action m. Emitter action -> HaloM props ctx state action m SubscriptionId
Subscribe to new actions from an Emitter
. Subscriptions will be automatically cancelled when the component
unmounts.
Returns a SubscriptionId
which can be used with unsubscribe
to manually cancel a subscription.
#fork Source
fork :: forall props ctx state action m. HaloM props ctx state action m Unit -> HaloM props ctx state action m ForkId
Start a HaloM
process running independantly from the current "thread". Forks are tracked automatically and
killed when the Finalize
event occurs (when the component unmounts). New forks can still be created during the
Finalize
event, but once evaluation ends there will be no way of killing them.
Returns a ForkId
for the new process.
Re-exports from React.Halo.Internal.Eval
#EvalSpec Source
type EvalSpec props ctx state action m = { onAction :: action -> HaloM props ctx state action m Unit, onFinalize :: Maybe action, onInitialize :: { context :: ctx, props :: props } -> Maybe action, onUpdate :: { context :: ctx, props :: props } -> { context :: ctx, props :: props } -> Maybe action }
A simpler interface for building the components eval function. The main lifecycle events map directly into
actions, so only the action handling logic needs to be written using HaloM
.
#defaultEval Source
defaultEval :: forall props ctx action state m. EvalSpec props ctx state action m
The empty EvalSpec
.
Re-exports from React.Halo.Internal.Types
#Lifecycle Source
data Lifecycle props ctx action
The Halo lifecycle events.
Initialize
contains the initial props. It occurs when the component mounts, and only once per component.Update
contains the previous and new props. It occurs when the component re-renders and the props have changes.Action
contains the dispatched action. It occurs each time an action is dispatched to be eval'd, up until theFinalize
event.Finalize
occurs when the component unmounts.
Constructors
Initialize { context :: ctx, props :: props }
Update { context :: ctx, props :: props } { context :: ctx, props :: props }
Action action
Finalize