Skip to main content

Application

Oneki.js provides a component to wrap the entire application. This component starts the framework and is usually the most external component of an application.

caution

The <App/> component is not the same for applications built from Create React App or Next.js.
Select the correct tab to view the documentation for what you are using.

Examples​

Minimal example
The minimum example consists of wrapping the entire application with <App/>
<App/> bootstraps a router (React router) and a store (Redux)
getting-started/cra/step02-navigation/src/index.tsx
loading...
Settings
In most cases, a configuration is injected into the application.
By convention, this configuration is coming from src/settings.ts
getting-started/cra/step04-authentication/src/index.tsx
loading...
App with settings, store and global services
This example shows how to create the properties expected by <App/>

In general, only the settings property is passed to <App/> while the other properties (store, services, ...) are initialized by the <App/> itself.

The example below initializes an <App/> by passing these properties:

  • Settings: An object defined in the file src/settings.ts
  • A global service: A global service is instantied only once and accessible everywhere in the application. The role of a service is to manipulate the Redux store. Check this documentation for more info.
  • A redux store: Normally the redux store should not be initialized manually, but this example shows how it's possible to inject our own store
examples/cra-app-custom-store/src/index.tsx
loading...

Documentation​

<App/> is the main component that bootstraps the Oneki.js framework on top of Create React App

This component is generally the external component of an application and is responsible for:

  • creating a Redux store:
    • If the store property is present, App doesn't create a Redux store but uses the one referenced by the property.
    • Otherwise, <App/> creates the Redux store. The initial state of the store is the object referenced by the property initialState.
  • creating a React Router. By default, it creates a BrowserRouter that can be changed / configured via the settings.ts file
  • creating and injecting global services in the Redux store
  • creating a context that contains three elements:
    • router: accessible via useRouter()
    • settings: accessible via useSettings()
    • redux store: accessible via useStore()

Custom redux store​

A custom Redux store can be created by calling the helper createReduxStore from Oneki.js

const store = createReduxStore((initialState = {}), (middlewares = []));

This helper expects an initial state and an array of Redux middlewares.

Properties​

(Mandatory properties are in bold)
PropertiesTypeDescription
settingsAppSettings | Promise<AppSettings>Settings is a object usually defined in the file src/settings.ts
Data defined in settings.ts is available throughout the application and contains configuration data.
More info here
Additional properties for advanced use cases
PropertiesTypeDescription
ErrorBoundaryComponentComponentType<ErrorBoundaryComponentProps>The component displayed when an error occurs during the rendering phase

Defaults to: no error boundary component
i18nNsstring[]More info here

Defaults to: undefined
initialLocalestringProperty to indicate the language to be used by default

Defaults to: undefined
initialStateAnyState | Promise<AnyState>The initial state passed to the Redux store when it is created

Defaults to: undefined
LoadingComponentElementTypeA component expected by <Suspense> (used to display a loading indicator)

Defaults to: <DefaultLoadingComponent /> that displays "Loading..."
servicesClass<default<AnyState>>[]A list of services that will be available globally in the application.
More info here
storeAppStore<any, AnyAction>A standard Redux store, but created via the helper createReduxStore from onekijs
The store must be created via this helper so onekijs can control it

Defaults to: A store created by <App/> (recommended)
translationsAnonymousObject<AnonymousObject<string>>An object containing the translations
More info here

Defaults to: undefined