lux

一个 Lua Redux 实现

$ opm get IgorMael/lux

Lux

Redux 在 Lua 上

它做什么?

此模块在 Lua 上实现了主要的 Redux 功能。您可以创建存储、分派操作并管理您的状态。

安装和使用

安装

您可以使用 OPM 安装此包。

    opm install IgorMael/Lux

创建存储

要创建存储,您应该调用 create_store 函数,它接受一个 reducer(要使用多个 reducer,您需要使用 combine_reducers 将它们组合起来)、一个可选的 initial_state 和一个可选的存储增强器

    create_store = function(reducer, initial_state, enhancer)

一个示例

    local lux = require 'lux'
    local reducer = require 'Reducer'
    
    local store = lux.create_store(reducer)

组合 reducers

在大多数现实世界应用中,您会希望使用多个 reducer。为此,您需要调用 combine_reducers 函数

        combine_reducers = function(reducer_list)

一个示例

        local lux = require 'lux'
    
        local reducers = lux.combine_reducers({item = reducers.item_reducer, monster = reducers.monster_reducer})
        local store = lux.create_store(reducers)

应用存储增强器

    apply_middleware is an example of store enhancer, it modifies the dispatch function with middlewares. An example of middleware will soon be disponibilized,
    ```
         apply_middleware = function(...)
    ```

分派操作

操作必须是一个 Lua 表格,其中包含 type 字段和可选的 payload

    store:dispatch(action)

还有一个例子

    local lux = require 'lux'
    local store = lux.create_store(reducer)
    
    local create_foo = function(name, bar_level)
        return {
            type = "ADD_MONSTER",
            payload = {
                id = id,
                name = name
            }
        }
    end
    
    store:dispatch(create_foo("FOOBAR", 12))

订阅

您可以订阅存储

        store:subscribe(callback)

示例

        local lux = require 'lux'
    local store = lux.create_store(reducer)
    
    local create_foo = function(name, bar_level)
        return {
            type = "ADD_MONSTER",
            payload = {
                id = id,
                name = name
            }
        }
    end
    
    store:subscribe(function() print("What a dispatch! Beautiful!")) -- callback will be called after ever dispatch
    

许可证

此项目在 MIT 许可证下获得许可 - 有关详细信息,请参阅 LICENSE 文件

作者

Igor Mael

许可证

mit

版本