Redux Path Store
Simplified redux store management leveraging the power of pathing objects.
Introduction
A path store is simply an automatically generated redux store which includes the reducers
and actions based upon the initial state it was provided.
Intuitive usage
Manage the redux state without having to dig into the management of
updating reducers or actions. Manage the redux state like you would manage the local state.
Modern and Typed
Uses TypeScript out of the box and will only support the usage of React Hooks.
The redux store paths are automatically typed for you to prevent miss spellings and
add autofill for your IDE.
Light and minimalistic
Its only built with a few files as it mostly piggy backs off of "@redux/toolkit" and "object-path-immutable".
Redux DevTools
Works with Redux DevTools, the automatically generated actions will show up in the extension as
normal.
Example
redux/rootStore.ts
interface RootState {
farms: {name: string}[]
farmer: {
name: string
details: {
age: number
}
}
}
const initialState = {
farms: [{name: 'Red Farm'}],
farmer: {name: 'Bobby Red', details: {age: 50}}
}
const {store, pathMap} = createStoreFromState<RootState>(initialState)
export const rootStore = store
export const Root = pathMap
console.log(Root.farms)
console.log(Root.farmer)
console.log(Root.farmer.details.age)
console.log(Root.doggy)
components/Farms.tsx
import {Root} from './redux/rootStore'
import {useReduxState} from 'redux-path-store'
const Farms: React.FC = () => {
const [animals, setAnimals] = useState([])
const [farmerAge, setFarmerAge] = useReduxState(Root.farmer.details.age)
const [farms, setFarms] = useReduxState(Root.farms)
const [farmer, setFarmer] = useReduxState(Root.farmer)
useEffect(() => {
setFarms((farms) => ({name: 'Blue Farm'}))
setFarmerAge(25)
}, [])
return (<>
{farms.map((farm) => <div>{farm.name}</div>)}
</>)
}