Skip to content

Latest commit

 

History

History
51 lines (44 loc) · 1.36 KB

reducer.md

File metadata and controls

51 lines (44 loc) · 1.36 KB

Reducer

  • The Reducer is a context-independent pure function. It receives the following parameters
    • T state
    • Action action
  • It mainly contains three aspects of information
    • Receive an "intent" and make a state modification.
    • If you want to modify the state, you need to create a new copy and modify it on the copy.
    • If the small state is modified, it will automatically trigger the copy of the main state's layers data, and then notify the components to refresh in a flattened manner.
  • Sample Code
/// one style of writing
String messageReducer(String msg, Action action) {
  if (action.type == 'shared') {
    return '$msg [shared]';
  }
  return msg;
}

class MessageComponent extends Component<String> {
    MessageComponent(): super(
            view: buildMessageView,
            effect: buildEffect(),
            reducer: messageReducer,
        );
}
/// another style of writing
Reducer<String> buildMessageReducer() {
  return asReducer(<Object, Reducer<String>>{
    'shared': _shared,
  });
}

String _shared(String msg, Action action) {
  return '$msg [shared]';
}

class MessageComponent extends Component<String> {
    MessageComponent(): super(
            view: buildMessageView,
            effect: buildEffect(),
            reducer: buildMessageReducer(),
        );
}

推荐的是第二种写法