@appsflow/redux
Version:
AppFlow redux
43 lines (33 loc) • 1.11 kB
text/typescript
import { useState } from "react";
import { useSelector } from "react-redux";
import { initStore, getStore } from "./store";
import { Routes, getRoutes } from "./managers/routes";
import { Controller } from "./controller";
const useAppSelector = <T>( selector: ( state: any ) => T ) => useSelector( selector );
export const useCurrentRoute = () => {
const state = useState( getRoutes().currentRoute ),
[ prevRoute, setRoute ] = state;
const unsubscribe = getStore().subscribe( () => {
const change = getStore().getState()['Flow/Redux/Routes']
if ( JSON.stringify( prevRoute.current ) !== JSON.stringify( change.current ) ) {
setRoute( change );
}
} );
return {
unsubscribe,
current: prevRoute
};
};
export function useControllerProperty( name: string, property: string ) {
return useAppSelector( state => state[ name ][ property ] );
}
export function useController( name: string ) {
return useAppSelector( state => state[ name ] );
}
export {
initStore,
getStore,
getRoutes,
Routes,
Controller
}