{"id":20338559,"url":"https://github.com/gavinhome/done-redux","last_synced_at":"2026-05-01T20:32:00.880Z","repository":{"id":63330437,"uuid":"566619387","full_name":"GavinHome/done-redux","owner":"GavinHome","description":"A combined .Net7 state management framework.","archived":false,"fork":false,"pushed_at":"2022-12-03T01:54:16.000Z","size":1185,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-14T17:59:24.958Z","etag":null,"topics":["component","dotnet","framework","functional-programming","redux","state-management"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GavinHome.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-16T03:40:28.000Z","updated_at":"2023-11-22T06:16:21.000Z","dependencies_parsed_at":"2023-01-22T15:00:10.389Z","dependency_job_id":null,"html_url":"https://github.com/GavinHome/done-redux","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GavinHome%2Fdone-redux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GavinHome%2Fdone-redux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GavinHome%2Fdone-redux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GavinHome%2Fdone-redux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GavinHome","download_url":"https://codeload.github.com/GavinHome/done-redux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241863618,"owners_count":20033027,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["component","dotnet","framework","functional-programming","redux","state-management"],"created_at":"2024-11-14T21:13:31.106Z","updated_at":"2026-05-01T20:32:00.789Z","avatar_url":"https://github.com/GavinHome.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"./dr.png\" align=\"center\" width=\"175\"\u003e\u003c/p\u003e\n\n\u003ch1\u003eDone Redux\u003c/h1\u003e\n\n[![build](https://github.com/GavinHome/done-redux/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/GavinHome/done-redux/actions/workflows/build.yml) [![codecov](https://codecov.io/gh/gavinhome/done-redux/branch/master/graph/badge.svg)](https://codecov.io/gh/gvinhome/done-redux)\n\n\n\n## What is Done Redux?\n\nDone Redux is a combined state management framework based on Redux and .Net7, namely Donet Redux.\nIt is suitable for building .NET applications.\n\nIt has four characteristics:\n\n\u003e 1. Functional Programming\n\n\u003e 2. Predictable State\n\n\u003e 3. Componentization\n\n\u003e 4. Flexible assembly\n\n\n\n## Documentation\n\nLanguage: [English](README.md) | [Chinese](README.zh.md)\n\n\n\n## Installation\n\n-   Initialization state, reducer, container\n-   Monitor subscriptions \n-   initiate commands\n\n````c#\nusing Redux;\n\nvar state = CounterState.initState();\nvar reducer = CounterReducer.buildReducer();\nvar store = StoreCreator.createStore\u003cCounterState\u003e(state, reducer);\n\nstore.Subscribe(() =\u003e\n{\n    var lastState = store.GetState();\n    var stateJson = System.Text.Json.JsonSerializer.Serialize(lastState);\n    Console.WriteLine($\"[Subscribe] last-state:{stateJson}\");\n});\n\nstore.Dispatch(CounterActionCreator.add(1));\nstore.Dispatch(CounterActionCreator.minus(2));\n\ninternal class CounterReducer\n{\n    internal static Reducer\u003cCounterState\u003e buildReducer()\n    {\n        var map = new Dictionary\u003cObject, Reducer\u003cCounterState\u003e\u003e();\n        map.Add(CounterAction.add, _add);\n        map.Add(CounterAction.minus, _minus);\n        return Converter.asReducers\u003cCounterState\u003e(map);\n    }\n\n    private static CounterState _minus(CounterState state, Redux.Action action)\n    {\n        CounterState? newState = state.Clone(); //clone\n        newState.Count -= action.Payload;\n        return newState;\n    }\n\n    private static CounterState _add(CounterState state, Redux.Action action)\n    {\n        CounterState? newState = state.Clone(); //clone\n        newState.Count += action.Payload;\n        return newState;\n    }\n}\n\ninternal enum CounterAction\n{\n    add,\n    minus,\n}\n\ninternal class CounterActionCreator\n{\n    internal static Redux.Action add(int payload)\n    {\n        return new Redux.Action(CounterAction.add, payload);\n    }\n\n    internal static Redux.Action minus(int payload)\n    {\n        return new Redux.Action(CounterAction.minus, payload);\n    }\n}\n\n[Serializable]\ninternal class CounterState\n{\n    public int Count { get; set; } = 0;\n\n    public static CounterState initState()\n    {\n        var state = new CounterState();\n        return state;\n    }\n}\n````\n\n\n\n## Example\n\n-   [Counter](test/redux_tests/Counter) - a simple counter demo.\n-   [Composite](test/redux_tests/Composite) - a composite demo .\n-   [Todo List](test/redux_tests/TodoList) - a simple todo list demo.\n\n\n\n## License\n\n[License](LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinhome%2Fdone-redux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgavinhome%2Fdone-redux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinhome%2Fdone-redux/lists"}