# Class: AppView Mandatory class to extend for the App's render method. It's the entrypoint view of every {{< glossterm >}}efb{{< /glossterm >}} apps. All events from the {{< glossterm >}}efb{{< /glossterm >}} are sent to this class when the app is visible. ### Type parameters {{< table-wrapper >}} | Name | Type | |:-----|:-------| | `T` | extends [`AppViewProps`](../../interfaces/interface-appviewprops/) = [`AppViewProps`](../../interfaces/interface-appviewprops/) | {{< /table-wrapper >}} ### Hierarchy - `DisplayComponent`<`T`> ↳ **`AppView`** ### Implements - `GamepadEventHandler` ### Properties #### defaultView • `ProtectedOptionalReadonly` **defaultView**: `string` Define the view the app should show immediately after being initialized. ------------------------------------------------------------------------ #### props • **props**: `T` & `ComponentProps` The properties of the component. {{< fake-header "5" "Inherited from" >}} DisplayComponent.props ------------------------------------------------------------------------ #### context • `Optional` **context**: \[\] The context on this component, if any. {{< fake-header "5" "Inherited from" >}} DisplayComponent.context ------------------------------------------------------------------------ #### contextType • `OptionalReadonly` **contextType**: readonly \[\] The type of context for this component, if any. {{< fake-header "5" "Inherited from" >}} DisplayComponent.contextType ### Accessors #### appViewService • `get` **appViewService**(): [`AppViewService`](../class-appviewservice/) Get AppViewService instance {{< fake-header "5" "Returns" >}} [`AppViewService`](../class-appviewservice/) **`Throws`** ------------------------------------------------------------------------ #### bus • `get` **bus**(): `EventBus` Get EventBus instance {{< fake-header "5" "Returns" >}} `EventBus` **`Throws`** ------------------------------------------------------------------------ #### unitsSettingManager • `get` **unitsSettingManager**(): `UnitsSettingsManager` Get units setting manager instance {{< fake-header "5" "Returns" >}} `UnitsSettingsManager` **`Throws`** ------------------------------------------------------------------------ #### efbSettingsManager • `get` **efbSettingsManager**(): `EfbSettingsManager` Get general setting manager instance {{< fake-header "5" "Returns" >}} `EfbSettingsManager` **`Throws`** ### Methods #### onOpen ▸ **onOpen**(): `void` Called once when the view is opened for the first time. {{< fake-header "5" "Returns" >}} `void` ------------------------------------------------------------------------ #### onClose ▸ **onClose**(): `void` Called once when the view is destroyed. {{< fake-header "5" "Returns" >}} `void` ------------------------------------------------------------------------ #### onResume ▸ **onResume**(): `void` Called each time the view is resumed. {{< fake-header "5" "Returns" >}} `void` ------------------------------------------------------------------------ #### onPause ▸ **onPause**(): `void` Called each time the view is closed. {{< fake-header "5" "Returns" >}} `void` ------------------------------------------------------------------------ #### onUpdate ▸ **onUpdate**(`time`): `void` On Update loop - It update the `AppViewService` if it is used. ##### Parameters {{< table-wrapper >}} | Name | Type | Description | |:-------|:---------|:----------------| | `time` | `number` | in milliseconds | {{< /table-wrapper >}} {{< fake-header "5" "Returns" >}} `void` ------------------------------------------------------------------------ #### registerViews ▸ **registerViews**(): `void` Callback to register all views the app might use. {{< fake-header "5" "Returns" >}} `void` ------------------------------------------------------------------------ #### render ▸ **render**(): [`TVNode`](../../interfaces/interface-tvnode/)<`NodeInstance`, `T`> If using EFB's AppViewService, this method returns an AppContainer bound to AppViewService. Otherwise it can be customized with plain JSX/TSX or custom view service, etc... {{< fake-header "5" "Returns" >}} [`TVNode`](../../interfaces/interface-tvnode/)<`NodeInstance`, `T`> **`Example`** Surrounding AppContainer with a custom class: ``` ts public render(): TVNode { return {super.render()}; } ``` **`Example`** Here's an plain JSX/TSX example: ``` ts public render(): TVNode { return Hello World!; } ``` ##### Overrides DisplayComponent.render ------------------------------------------------------------------------ #### onAfterRender ▸ **onAfterRender**(`node`): `void` ##### Parameters {{< table-wrapper >}} | Name | Type | |:-------|:--------| | `node` | `VNode` | {{< /table-wrapper >}} {{< fake-header "5" "Returns" >}} `void` **`Inherit Doc`** ##### Overrides DisplayComponent.onAfterRender ------------------------------------------------------------------------ #### onBeforeRender ▸ **onBeforeRender**(): `void` A callback that is called before the component is rendered. {{< fake-header "5" "Returns" >}} `void` {{< fake-header "5" "Inherited from" >}} DisplayComponent.onBeforeRender ------------------------------------------------------------------------ #### getContext ▸ **getContext**(`context`): `never` Gets a context data subscription from the context collection. ##### Parameters {{< table-wrapper >}} | Name | Type | Description | |:----------|:--------|:-----------------------------------------| | `context` | `never` | The context to get the subscription for. | {{< /table-wrapper >}} {{< fake-header "5" "Returns" >}} `never` The requested context. **`Throws`** An error if no data for the specified context type could be found. {{< fake-header "5" "Inherited from" >}} DisplayComponent.getContext