Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Roblox/rodux

A state management library for Roblox Lua inspired by Redux
https://github.com/Roblox/rodux

lua redux roblox state

Last synced: about 2 months ago
JSON representation

A state management library for Roblox Lua inspired by Redux

Awesome Lists containing this project

README

        

Rodux




GitHub Actions Build Status


Coveralls Coverage


Documentation


A state management library for Roblox Lua inspired by Redux.

 

## Installation

### Method 1: Model File (Roblox Studio)
* Download the `rbxm` model file attached to the latest release from the [GitHub releases page](https://github.com/Roblox/rodux/releases).
* Insert the model into Studio into a place like `ReplicatedStorage`

### Method 2: Filesystem
* Copy the `src` directory into your codebase
* Rename the folder to `Rodux`
* Use a plugin like [Rojo](https://github.com/LPGhatguy/rojo) to sync the files into a place

## Usage
Rodux works just like [Redux](https://redux.js.org)'s base API.

See the official [Rodux Documentation](https://roblox.github.io/rodux/) for more details.

```lua
local Rodux = require(script.Parent.Rodux)

local function reducer(state, action)
state = state or {
frobulations = 0,
}

if action.type == "frobulate" then
return {
frobulations = state.frobulations + 1,
}
end

return state
end

local store = Rodux.Store.new(reducer)

store:getState() -- { frobulations = 0 }

store:dispatch({
type = "frobulate",
})

store:getState() -- { frobulations = 1 }
```

## Contributing
Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for information.

## License
Rodux is available under the Apache 2.0 license. See [LICENSE](LICENSE) for details.