{"repo":"sergdort/CombineFeedback","free":true,"listed":false,"github":"https://github.com/sergdort/CombineFeedback","clone":"git clone https://github.com/sergdort/CombineFeedback.git","description":"Unidirectional reactive architecture using new Apple Combine framework https://developer.apple.com/documentation/combine","language":"Swift","stars":686,"topics":["swift","swiftui","combine","architecture","unidirectional"],"license":"MIT","category":"mobile-apps","readme_excerpt":"CombineFeedback Unidirectional Reactive Architecture. This is a Combine implemetation of ReactiveFeedback and RxFeedback Diagram Motivation Requirements for iOS apps have become huge. Our code has to manage a lot of state e.g. server responses, cached data, UI state, routing etc. Some may say that Reactive Programming can help us a lot but, in the wrong hands, it can do even more harm to your code base. The goal of this library is to provide a simple and intuitive approach to designing reactive state machines. Core Concepts State State is the single source of truth. It represents a state of your system and is usually a plain Swift type. Your state is immutable. The only way to transition from one State to another is to emit an Event . Event Represents all possible events that can happen in your system which can cause a transition to a new State . Reducer A Reducer is a pure function with a signature of ( inout State, Event) - Void . While Event represents an action that results in a State change, it's actually not what causes the change. An Event is just that, a representation of the intention to transition from one state to another. What actually causes the State to change, the embodiment of the corresponding Event , is a Reducer. A Reducer is the only place where a State can be changed. Feedback While State represents where the system is at a given time, Event represents a state change, and a Reducer is the pure function that enacts the event causing the state to change, th","default_branch":null,"files":null,"tree":[],"storefront":"/r/sergdort","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/sergdort/CombineFeedback/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}