@rbxts/roact-rodux-hooked
Version:
Hooks for Rodux with roact-hooked
56 lines (42 loc) ⢠1.65 kB
Markdown
Useful hooks for Rodux with [roact-hooked](https://www.npmjs.com/package/@rbxts/roact-hooked)
āļø This library only exists for use with roact-hooked
š Compatible with [roselect](https://www.npmjs.com/package/@rbxts/roselect)
š Based on [@types/react-redux](https://www.npmjs.com/package/@types/react-redux)
```tsx
import Roact from "@rbxts/roact";
import { useDispatch, useSelector } from "@rbxts/roact-rodux-hooked";
import { withHooks } from "@rbxts/roact-hooked";
import { Store, StoreState, increment } from "client/store";
function Counter() {
const count = useSelector((state: StoreState) => state.count);
const dispatch = useDispatch<Store>();
return (
<textbutton
Text={`Counter: ${count}`}
BackgroundColor3={Color3.fromRGB(80, 120, 200)}
Size={new UDim2(0.5, 0, 1, 0)}
Event={{
Activated: () => dispatch(increment()),
}}
/>
);
}
export default withHooks(Counter);
```
```tsx
import Roact from "@rbxts/roact";
import { StoreProvider } from "@rbxts/roact-rodux-hooked";
import { configureStore } from "./store";
export default function App() {
return <StoreProvider store={configureStore()}>...</StoreProvider>;
}
```
```ts
import { TypedUseSelectorHook, useDispatch, useSelector, useStore } from "@rbxts/roact-rodux-hooked";
import { RootDispatch, RootState, RootStore } from "./store";
export const useRootStore = useStore as () => RootStore;
export const useRootDispatch = useDispatch as () => RootDispatch;
export const useRootSelector = useSelector as TypedUseSelectorHook<RootState>;
```