Granite
Signature
typescript
Granite: {
registerApp(AppContainer: ComponentType<PropsWithChildren<InitialProps>>, { appName, context, router }: GraniteProps): (initialProps: InitialProps) => JSX.Element;
readonly appName: string;
}Property
- registerApprequired · RegisterService
This function sets up the basic environment for your service and helps you start service development quickly without needing complex configuration. By just passing
appName, you can immediately use various features such as file-based routing, query parameter handling, and back navigation control.
The features provided by the Granite.registerApp function are as follows:
- Routing: URLs are automatically mapped according to file paths. It works similarly to Next.js's file-based routing. For example, the
/my-service/pages/index.tsfile can be accessed atscheme://my-service, and the/my-service/pages/home.tsfile can be accessed atscheme://my-service/home. - Query Parameters: You can easily use query parameters received through URL schemes. For example, you can receive a
referrerparameter and log it. - Back Navigation Control: You can control back navigation events. For example, when a user presses back on a screen, you can show a dialog or close the screen.
- Screen Visibility: You can determine whether a screen is visible or hidden from the user. For example, you can use this value to handle specific actions when a user leaves for the home screen.
Example
Example of creating with the Granite component
tsx
import { PropsWithChildren } from 'react';
import { Granite, InitialProps } from '@granite-js/react-native';
import { context } from '../require.context';
function AppContainer({ children }: PropsWithChildren<InitialProps>) {
return <>{children}</>;
}
export default Granite.registerApp(AppContainer, {
appName: 'my-app',
context,
});