nanxiaobei/flooks

有考虑加入“计算状态”的功能计划吗

itmanyong opened this issue · 1 comments

通过掘金博客下的评论得知flooks宝库,极简的设计和性能很惊讶。
基于现有的实现方案总觉得不够优雅,感觉既然所属flooks模块就应该跟随模块,这样也方便维护和编码。
考虑计算状态的情况主要有以下几点:
1.针对模块state的衍生数据其实还是很常见,例如:转换、避敏、过滤等可能涉及到的操作。
2.利用flooks的性能优化点能够很好地缓存和使用,防止无效渲染。
当前能够达到计算状态相同效果的做法:
1.计算状态当做常规state存储,针对其依赖state被改变时同时改变计算状态。但是会显示不够优雅,显得不是很有意义。如果涉及其他异步操作等不方便组织代码。
2.useMemo,同等效果情况下非模块内数据,切换组件不具备缓存效果,且不方便多组件共享。
如果可行粗略的几点功能设计建议:
1.默认深度依赖,自动识别依赖项。
2.计算状态的申明还是采取函数式,为了区分actions可以导出一个API传入计算函数。
3.支持异步操作,初始化执行。
4.可识别其他模块所依赖依赖state

感谢建议,目前暂无此计划。

  1. “计算状态”是一种很常见的 API 设计,但其实在前端范畴,主要是 Vue API 实现有 computed,而在 React 中并无此概念(useMemo 算是曲线救国),所以这里还是希望保持与 React 设计哲学一致,同时保持简洁。
  2. 欢迎 PR,flooks 本身代码比较清晰,并无繁杂概念,而对计算属性的痛点,相信有强烈需求的开发者更清楚。
  3. 后续可能会实现,如果此需求比较刚需,但目前无法做出任何承诺。