新闻资讯
fish_redux 的分工合作
-
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); } }
-
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('路由地址'); }
-
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; }
-
state就是当前页面需要展示的一些数据
-
view就是当前的UI展示效果
-
page和component就是上述的载体,用来将数据和UI整合到一起
-
adapter用来整合列表视图
原文链接:https://juejin.im/post/5e4f5bbce51d4526c550a7fe
回复列表