You can install it via npm i @rbxts/rodux
.
if you decide to use the thunk middleware, you will have to explictly set the template argments when creating Rodux.Store, otherwise it will not type correctly.
Example:
import Rodux, { combineReducers, applyMiddleware } from "@rbxts/rodux";
import characterReducer, {
ICharacterReducer,
CharacterActions,
} from "./CharacterReducer";
export interface IStore {
Character: ICharacterReducer;
}
export type StoreActions = CharacterActions;
const reducers = combineReducers<IStore, StoreActions>({
Character: characterReducer,
});
type StoreThunk = Rodux.ThunkDispatcher<IStore, StoreActions>;
const store = new Rodux.Store<IStore, StoreActions, StoreThunk>(
reducers,
{},
[Rodux.thunkMiddleware],
);
Explicitly defining the type for Rodux.thunkMiddleware will allow you to get the correct types for the store, otherwise it will be Rodux.Store<any>
If you also use Rodux.loggerMiddleware
(or any other middleware) :
type StoreThunk = Rodux.ThunkDispatcher<IStore, StoreActions>;
const store = new Rodux.Store<IStore, StoreActions, StoreThunk, {}>(
reducers,
{},
[Rodux.thunkMiddleware, Rodux.loggerMiddleware],
);
The original Rodux library's License can be found here: Rodux License