statelisted
Install: claude install-skill kineticdata/kinetic-platform-ai-skills
# State Management
## `regRedux` — Dynamic Slice Registration
`regRedux` registers a named Redux slice at runtime and returns dispatch-wrapped action functions. No `useDispatch` needed — actions can be called anywhere.
```js
// portal/src/redux.js
import { configureStore, combineSlices, createSlice } from '@reduxjs/toolkit';
const init = createSlice({ name: 'init', initialState: false,
reducers: { regRedux: () => true } });
const rootReducer = combineSlices(init);
export const store = configureStore({
reducer: rootReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
serializableCheck: {
ignoredActions: ['view/handleResize', 'confirm/open'],
ignoredPaths: ['confirm.options.accept', 'confirm.options.cancel'],
},
}),
});
export const regRedux = (name, initialState, reducers) => {
const slice = createSlice({
name, initialState,
reducers: Object.fromEntries(
Object.entries(reducers).map(([k, v]) => [
k, (state, { payload }) => v(state, payload),
]),
),
});
rootReducer.inject(slice, { overrideExisting: true });
store.dispatch(init.actions.regRedux());
return Object.fromEntries(
Object.entries(slice.actions).map(([k, v]) => [
k, (...args) => store.dispatch(v(...args)),
]),
);
};
```
**Usage:**
```js
// Register a slice and get back callable action functions
export const myActions = regRedux('myFeature', { count: 0 }, {
increment(state, amount) { state.count +=