新闻资讯

新闻资讯 行业动态

fish_redux 的分工合作

编辑:008     时间:2020-02-25


  1. action是用来定义一些操作的声明,其内部包含一个枚举类XxxAction和 声明类XxxActionCreator,枚举类用来定义一个操作,ActionCreator用来定义一个Action,通过dispatcher发送对应Action就可以实现一个操作。例如我们需要打开一个行的页面,可以如下进行定义

    enum ExamAction { openNewPage, openNewPageWithParams } class ExamActionCreator { static Action onOpenNewPage(){ // Action 可以传入一个 payload,例如我们需要携带参数跳转界面,则可以通过 payload 传递 // 然后在 effect 或者 reducer 层通过 action.payload 获取 return const Action(ExamAction.openNewPage);
        } static Action onOpenNewPageWithParams(String str){ return Action(ExamAction.openNewPageWithParams, payload: str);
        }
    } 
  2. effect用来定义一些副作用的操作,例如网络请求,页面跳转等,通过buildEffect方法结合Action和最终要实现的副作用,例如还是打开页面的操作,可通过如下方式实现

    Effect<ExamState> buildEffect() { return combineEffects(<Object, Effect<ExamState>>{
        ExamAction.openNewPage: _onOpenNewPage,
      });
    } void _onOpenNewPage(Action action, Context<ExamState> ctx) {
      Navigator.of(ctx.context).pushNamed('路由地址');
    } 
  3. reducer用来定义数据发生变化的操作,比如网络请求后,数据发生了变化,则把原先的数据clone一份出来,然后把新的值赋值上去,例如有个网络请求,发生了数据的变化,可通过如下方式实现

    Reducer<ExamState> buildReducer() { return asReducer(
        <Object, Reducer<ExamState>>{
          HomeAction.onDataRequest: _onDataRequest,
        },
      );
    }
    
    ExamState _onDataRequest(ExamState state, Action action) { // data 的数据通过 action 的 payload 进行传递,reducer 只负责数据刷新 return state.clone()..data = action.payload;
    }
  4. state就是当前页面需要展示的一些数据

  5. view就是当前的UI展示效果

  6. page和component就是上述的载体,用来将数据和UI整合到一起

  7. adapter用来整合列表视图




原文链接:https://juejin.im/post/5e4f5bbce51d4526c550a7fe
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐