Json-render redux
Redux adapter for json-render's StateStore interface. Use when integrating json-render with Redux or Redux Toolkit for state management via @json-render/redux.
install
source · Clone the upstream repo
git clone https://github.com/vercel-labs/json-render
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/vercel-labs/json-render "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/redux" ~/.claude/skills/vercel-labs-json-render-redux && rm -rf "$T"
manifest:
skills/redux/SKILL.mdsource content
@json-render/redux
Redux adapter for json-render's
StateStore interface. Wire a Redux store (or Redux Toolkit slice) as the state backend for json-render.
Installation
npm install @json-render/redux @json-render/core @json-render/react redux # or with Redux Toolkit (recommended): npm install @json-render/redux @json-render/core @json-render/react @reduxjs/toolkit
Usage
import { configureStore, createSlice } from "@reduxjs/toolkit"; import { reduxStateStore } from "@json-render/redux"; import { StateProvider } from "@json-render/react"; // 1. Define a slice for json-render state const uiSlice = createSlice({ name: "ui", initialState: { count: 0 } as Record<string, unknown>, reducers: { replaceUiState: (_state, action) => action.payload, }, }); // 2. Create the Redux store const reduxStore = configureStore({ reducer: { ui: uiSlice.reducer }, }); // 3. Create the json-render StateStore adapter const store = reduxStateStore({ store: reduxStore, selector: (state) => state.ui, dispatch: (next, s) => s.dispatch(uiSlice.actions.replaceUiState(next)), }); // 4. Use it <StateProvider store={store}> {/* json-render reads/writes go through Redux */} </StateProvider>
API
reduxStateStore(options)
reduxStateStore(options)Creates a
StateStore backed by a Redux store.
| Option | Type | Required | Description |
|---|---|---|---|
| | Yes | The Redux store instance |
| | Yes | Select the json-render slice from the Redux state tree. Use if the entire state is the model. |
| | Yes | Dispatch an action that replaces the selected slice with the next state |
The
dispatch callback receives the full next state model and the Redux store.