Reducer

  • Reducer 是一个上下文无关的 pure function。它接收下面的参数
    • T state
    • Action action
  • 它主要包含三方面的信息
    • 接收一个“意图”, 做出数据修改。
    • 如果要修改数据,需要创建一份新的拷贝,修改在拷贝上。
    • 如果数据修改了,它会自动触发 State 的层层数据的拷贝,再以扁平化方式通知组件刷新。
  • 示例代码
  1. /// one style of writing
  2. String messageReducer(String msg, Action action) {
  3. if (action.type == 'shared') {
  4. return '$msg [shared]';
  5. }
  6. return msg;
  7. }
  8. class MessageComponent extends Component<String> {
  9. MessageComponent(): super(
  10. view: buildMessageView,
  11. effect: buildEffect(),
  12. reducer: messageReducer,
  13. );
  14. }
  1. /// another style of writing
  2. Reducer<String> buildMessageReducer() {
  3. return asReducer(<Object, Reducer<String>>{
  4. 'shared': _shared,
  5. });
  6. }
  7. String _shared(String msg, Action action) {
  8. return '$msg [shared]';
  9. }
  10. class MessageComponent extends Component<String> {
  11. MessageComponent(): super(
  12. view: buildMessageView,
  13. effect: buildEffect(),
  14. reducer: buildMessageReducer(),
  15. );
  16. }

推荐的是第二种写法