Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
@aigamo/route-sphere
Advanced tools
Sync query parameters with a MobX store and React Router.
This was originally developed in VocaDB/vocadb#965 as a part of VocaDB.
NOTE: This is an independent fork of VocaDB/route-sphere.
yarn add @aigamo/route-sphere
or npm i @aigamo/route-sphere
There are three custom hooks, depending on the use case: useStoreWithUpdateResults
, useStoreWithPagination
and useStoreWithRouteParams
. These hooks are defined as below:
const useStoreWithUpdateResults = <TRouteParams>(store: StoreWithUpdateResults<TRouteParams>): void;
const useStoreWithPagination = <TRouteParams>(store: StoreWithPagination<TRouteParams>): void;
const useStoreWithRouteParams = <TRouteParams>(store: StoreWithRouteParams<TRouteParams>): void;
The useStoreWithUpdateResults
updates search results whenever the routeParams
property changes. The StoreWithUpdateResult
interface is defined as below:
interface StoreWithUpdateResults<TRouteParams>
extends StoreWithRouteParams<TRouteParams> {
readonly clearResultsByQueryKeys: (keyof TRouteParams)[];
/** Called when search results should be cleared. */
onClearResults?: () => void;
updateResults(clearResults: boolean): Promise<void>;
}
The useStoreWithUpdateResults
hook determines if search results should be cleared by comparing the current and previous values. If that's the case, the onClearResults
callback is called.
The useStoreWithPagination
hook is a helper hook that is composed of the useStoreWithUpdateResults
and useStoreWithRouteParams
hooks. The StoreWithPagination
interface is defined as below:
interface StoreWithPagination<TRouteParams>
extends StoreWithUpdateResults<TRouteParams> {
/** Called when search results should be cleared. */
onClearResults(): void;
}
The useStoreWithRouteParams
hook updates a store that implements the StoreWithRouteParams
interface when a route changes, and vice versa. The StoreWithRouteParams
interface is defined as below:
interface StoreWithRouteParams<TRouteParams> {
routeParams: TRouteParams;
validateRouteParams(data: any): data is TRouteParams;
}
The validateRouteParams
function validates route params and should return true
if and only if the passed data is valid. Validation happens every time location
(not URL) changes, which means, when the page is first loaded, when the back/forward buttons on the browser are clicked, and when the page is navigated to a new location programmatically by using the useNavigate
hook. Note that the <Link>
component uses the useNavigate
hook internally.
The routeParams
property gets and sets the state of the store.
Reactions should be independent: Does your code rely on some other reaction having to run first? If that is the case, you probably either violated the first rule, or the new reaction you are about to create should be merged into the one it is depending upon. MobX does not guarantee the order in which reactions will be run.
Source: Running side effects with reactions · MobX
We use JSON schema to validate route params. Use typescript-json-schema project/directory/tsconfig.json TYPE
to generate schema from a TypeScript type. For more information, see YousefED/typescript-json-schema.
FAQs
Sync query parameters with a MobX store and React Router.
We found that @aigamo/route-sphere demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.