ReduxDelphi
1.0.0
Reduxdelphi는 단방향 데이터 흐름을 사용하는 델파이 앱을위한 예측 가능한 상태 컨테이너입니다. https://github.com/reactjs/redux에서 영감을 얻었습니다.
이 프로젝트는 현재 Delphi 10.1로 개발되었습니다
TODOMVC 샘플은 불변의 데이터 구조 (일반 불변 목록)를 기반으로합니다.
다음은 매장, 행동, 파견, ... : : : :
unit DemoCounterForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Redux;
type
TEnumAction= (INIT, INCREMENT, DECREMENT);
TFormDemoCounter = class (TForm)
ButtonInc: TButton;
ButtonDec: TButton;
LabelCounter: TLabel;
procedure ButtonIncClick (Sender: TObject);
procedure ButtonDecClick (Sender: TObject);
procedure FormShow (Sender: TObject);
private
FStore : IStore<Integer, TEnumAction>;
end ;
var
FormDemoCounter: TFormDemoCounter;
implementation
{ $R *.dfm }
procedure TFormDemoCounter.ButtonIncClick (Sender: TObject);
begin
FStore.dispatch(INCREMENT);
end ;
procedure TFormDemoCounter.ButtonDecClick (Sender: TObject);
begin
FStore.dispatch(DECREMENT);
end ;
procedure TFormDemoCounter.FormShow (Sender: TObject);
var
FReducer : TReducer<Integer,TEnumAction>;
begin
FReducer :=
function(State: Integer; Action: TEnumAction): Integer
begin
case Action of
INCREMENT:
Result := State + 1 ;
DECREMENT:
Result := State - 1 ;
else
Result := State;
end ;
end ;
FStore := TStore<Integer, TEnumAction>.Create(FReducer, 0 );
FStore.subscribe( procedure (State: Integer)
begin
LabelCounter.Caption := IntToStr(State);
end
);
FStore.dispatch(INIT);
end ;
end .