Documentation
¶
Index ¶
- func AfterUpdate(afterUpdater AfterUpdater)
- func CurrentRoute() string
- func Destroy() tea.Msg
- func New(root Component[NoProps]) model
- func RenderAny[TProps any, TRenderer AnyRenderer[TProps]](renderer TRenderer, props TProps, width, height int) string
- func SetCurrentRoute(newRoute string)
- func WasRouteChanged() bool
- type AfterUpdater
- type AnyProplessRenderer
- type AnyRenderer
- type BasicComponent
- type BasicPropfulComponent
- type Component
- type DumbRenderer
- type InvisibleComponent
- type NoProps
- type ProplessRenderer
- type Renderer
- type SomeComponent
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AfterUpdate ¶
func AfterUpdate(afterUpdater AfterUpdater)
Queue component for AfterUpdate event
func CurrentRoute ¶
func CurrentRoute() string
func RenderAny ¶
func RenderAny[TProps any, TRenderer AnyRenderer[TProps]](renderer TRenderer, props TProps, width, height int) string
Renders all AnyRenderers in one function
func SetCurrentRoute ¶
func SetCurrentRoute(newRoute string)
func WasRouteChanged ¶
func WasRouteChanged() bool
Types ¶
type AfterUpdater ¶
type AnyProplessRenderer ¶ added in v0.2.0
type AnyProplessRenderer interface {
ProplessRenderer | DumbRenderer
}
type AnyRenderer ¶ added in v0.2.0
type AnyRenderer[TProps any] interface { func(TProps, int, int) string | AnyProplessRenderer }
Why not Renderer[TProps]? It would have to be type alias there are no type aliases yet for generics, but they are planned for Go 1.20. Something to keep in mind for future
type BasicComponent ¶
type BasicComponent struct{}
The most basic form of reactea component It implements all not required methods so you don't have to
func (*BasicComponent) AfterUpdate ¶
func (c *BasicComponent) AfterUpdate() tea.Cmd
func (*BasicComponent) Destroy ¶
func (c *BasicComponent) Destroy()
type BasicPropfulComponent ¶
type BasicPropfulComponent[TProps any] struct { // contains filtered or unexported fields }
Stores props in struct. If you want to derive state from UpdateProps() you're probably looking at wrong thing
func (*BasicPropfulComponent[TProps]) Init ¶
func (c *BasicPropfulComponent[TProps]) Init(props TProps) tea.Cmd
func (*BasicPropfulComponent[TProps]) Props ¶
func (c *BasicPropfulComponent[TProps]) Props() TProps
func (*BasicPropfulComponent[TProps]) UpdateProps ¶
func (c *BasicPropfulComponent[TProps]) UpdateProps(props TProps)
type Component ¶
type Component[TProps any] interface { // You always have to initialize component with some kind of // props - it can even be zero value // Init() Is meant to both initialize subcomponents and run // long IO operations through tea.Cmd Init(TProps) tea.Cmd // It's called when component is about to be destroyed // // Note: It's parent component's job to call it so // relying on it outside of reactea builtins is // not reliable Destroy() // Typical tea.Model Update(), we handle all IO events here Update(tea.Msg) tea.Cmd // Callee already knows at which size should it render at Render(int, int) string // It's an Update() but for props, the state derive stage // happens here UpdateProps(TProps) // AfterUpdate is stage useful for components like routers // to prepare content. Saying that you will probably never // need to use it AfterUpdate() tea.Cmd }
func Componentify ¶ added in v0.2.0
func Componentify[TProps any, TRenderer AnyRenderer[TProps]](renderer TRenderer) Component[TProps]
Componentifies AnyRenderer Returns uninitialized component with renderer taking care of .Render()
type DumbRenderer ¶
type DumbRenderer = func() string
Doesn't have state, props, even scalling for target dimensions = DumbRenderer, or Stringer
type InvisibleComponent ¶
type InvisibleComponent struct{}
Utility component for displaying empty string on Render()
type ProplessRenderer ¶
SUPEEEEEER shorthand for components
func PropfulToLess ¶
func PropfulToLess[TProps any](renderer Renderer[TProps], props TProps) ProplessRenderer
Wraps propful into propless renderer
type Renderer ¶
Ultra shorthand for components = just renderer One could say it's a stateless component Also note that it doesn't handle any IO by itself
TODO: Change to type alias after type aliases for generics support is released (planned Go 1.20). For now explicit type conversion is required
type SomeComponent ¶
type SomeComponent interface {
Destroy()
Update(tea.Msg) tea.Cmd
Render(int, int) string
AfterUpdate() tea.Cmd
}
Interface which is basically reactea.Component just without the props part
func SomeComponentify ¶ added in v0.2.0
func SomeComponentify[TProps any, TRenderer AnyRenderer[TProps]](renderer TRenderer, initialProps TProps) SomeComponent
I don't care about props, just give me SomeComponent
