fish redux 理解

fish redux是什么

Fish Redux 是一个基于 Redux 数据管理的组装式 flutter 应用框架, 它特别适用于构建中大型的复杂应用。
它的特点是配置式组装。 一方面我们将一个大的页面,对视图和数据层层拆解为互相独立的 Component|Adapter,上层负责组装,下层负责实现; 另一方面将 Component|Adapter 拆分为 View,Reducer,Effect 等相互独立的上下文无关函数。
所以它会非常干净,易维护,易协作。
Fish Redux 的灵感主要来自于 Redux, Elm, Dva 这样的优秀框架。而 Fish Redux 站在巨人的肩膀上,将集中,分治,复用,隔离做的更进一步。

fish redux 干什么用的

fish redux 用作flutter项目中的状态管理,在我看来,它可以作为组织Flutter页面的利器。就目前flutter页面 如果把每一个widget都放到一个dart文件中,在阅读源码以及后续的维护上都是非常困难的一件事,使用fish redux就可以打破这种局面,页面中每个Component 都单独出来,清爽了许多。

fish redux 怎么用

  1. 理解fish redux的组成

    模块名称 作用
    store 根据继承关系而来的状态树
    state 保存页面状态(例如 主题色)
    Action 动作(例如添加)
    Effect/Reducer 处理Action(根据不同的action,修改与action相对应的state)返回新state时fish redux层层通知修改页面状态 两者的区别:

    举个例子: Effect处理类似 页面初始化的时候对state 数据做的一些修改 或者 异步请求这些东西
    >Reducer 处理类似 单击页面中某按钮,修改主题色这样的动作

    view 绘制页面
    Adapter 适配器【主要用于页面中包含 Lisview,适配ListView中每一项,比较特殊】
    Connector 连接 【描述了主页面的state与页面中的Component的关系】,从page state中存取与之关联的Component的状态。
    Component 页面小部件,组成page的一部分
    page 对以上内容的组装描述

2.解读fish redux github上提供的示例,地址:https://github.com/alibaba/fish-redux/tree/master/example

​看图理解 :上图是example的一个项目结构图,立体的画出来理解起来更容易一点
global store,里边保存了 根状态 ,这个根状态目前只有主题颜色 ,state树 store
一个 修改主题的action 一个执行修改主题的Reducer
list页面继承了根state, 同时有自己的状态 toDos【ListView中的数据】,数据展示流程是,在effect中执行页面初始化
Lifecycle.initState 初始化数据A,通过执行动作initToDosAction,传递数据A修改state中的todos 返回新状态【更新状态≈更新页面视图】, 紧接着页面加载的时候state中的toDos不为空加载出来想要展示的数据
进入page.dart dependencies里边有两项比较重要,第一个是adapter 适配器,我的理解中这个就是为listview而生的,通过指定conn 和和与之对应的的Adapter,声明一个连接了生成ListItem的companent和连接,conn就是pagestate与ListItem的关系,示例中的是: NoneConn() + ToDoListAdapter(), 在ToDoListAdapter中指定了 ToDoComponent【ListItem】的companent,并且制定了两者之间的connect ,从page的 state.toDos里边取小数据List,把小数据写入到“大”数据... 这个比较特殊 是专门处理listview的
另外一个是slots ,这里是一个connect加一个component这个好理解一点,就是通过connect连接pagestate和component,connector中声明了外层page与component中state的关系 ,目前最多支持6个参数,这里的参数可以自定义,所以6个足够用了,不够用就把某个改成类...
想要从根节点修改:
例如修改主题:
GlobalStore.store.dispatch(GlobalActionCreator.onchangeThemeColor());

最新文章

  1. Unity iOS混合开发界面切换思路
  2. JavaWeb chapter10 JavaWeb开发模式
  3. Visual studio 生成事件的使用 、xcopy 实现 dll 复制操作、
  4. backBarButtonItem 替换
  5. 完全卸载Oracle方法、步骤
  6. SQL in查询
  7. mongoDB 入门指南、示例
  8. tomcat 粗略笔记
  9. private
  10. lightoj 1063 求割点
  11. php 启动过程 - reqeust RINIT 过程
  12. Machine Learning - week 3
  13. Jmeter性能测试之分布式(五)
  14. vscode断点调试本地客户端文件
  15. Neo4j初探
  16. 009.KVM配置调整
  17. vmware备份
  18. Java-Runoob-高级教程: Java 多线程编程
  19. Dubbo的配置及启动
  20. MSSQL 日期查询 包含NULL值

热门文章

  1. 查看memcache版本
  2. Default Keyboard Shortcut Schemes
  3. 如何捕捉Desried Capabilities中的appPackafe和appActive
  4. django 后台静态文件不显示
  5. android popupwindow 位置显示
  6. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_10-freemarker静态化测试-基于模板文件静态化
  7. CRLF——http response 拆分攻击(webgoat)
  8. idea设置方法注释
  9. 前端手势控制图片插件书写三(将transform变化应用在图片和canvas画布上)
  10. 《你必须知道的495个C语言问题》读书笔记之第8-10章:字符串、布尔类型和预处理器