前段时间参考 vue 原理,花了几个月对 react 做了一个响应式框架: [ Pastate.js ] ,它使 react 可以像 vue 一样进行 [响应式赋值] 和实现 [自动双向数据绑定] 。
项目地址: https://github.com/BirdLeeSCUT/pastate
使用超级简单,文档非常齐全,欢迎各位参考取用和 star⭐,欢迎交流指教!
Pastate 是一个响应式 react state 管理框架,实现了对 state 的异步响应式管理。Pastate 是一个精益框架,它对很多高级概念进行了友好封装,这意味着你不必学习一些难以理解的概念,就可以在一个简单的应用中便捷地使用 pastate。在应用变得逐渐复杂的过程中,你只要逐渐学习并使用 pastate 中更多的功能,以满日益复杂的系统开发需求。同时,pastate 也是一个向后兼容的渐进式框架,你可以在现有的 react 或 redux 项目中,把一部分组件改用 pastate 来实现,再逐渐拓展到整个项目。
[特性] 便捷易用:pastate 对高级概念进行了封装,只要有 react 基础知识即可轻松上手 响应式 state: 可以直接用 js 原生模式更新 state 的值,pastate 会响应式地为你更新相关视图 类型提示:pastate 具有完善的类型定义文件,可借助 intelliSense 极大地提高开发效率 按需渲染:pastate 实现了 state 节点按需溯源更新引用机制,视图可以高效响应 state 的变化 异步更新机制:当你对 state 进行连续的修改时,pastate 会高效地为你只做一次异步视图更新 友好的学习曲线:pastate 封装了 flux 模式的高级概念,只需在感兴趣时去了解这些概念 兼容 redux 项目:你可以把 pastate 轻松整合到 redux 项目中,把部分容器实现为 pastate 模式 支持 TypeScript:pastate 本身使用 TpyeScript 进行开发,有完善的类型定义和泛型支持 MIT 协议授权 : 你可以免费地在个人或商业项目中使用,并按需修改或扩展
[原理] Pastate 名字源自 Path State 的简写,pastate 在 state 的每个节点上增加节点的位置(path)信息和 store 归属信息,从而实现对象或数组节点的按需递归引用更新,实现 immutable state 特性,因此 pastate 可以管理复杂的 state 树并实现高效的异步按需渲染。同时 pastate 基于 ES5 的 Object.assign 实现了 state 的全节点响应式操作支持,你只需像修改普通变量一样修改 state 即可, 如 state.userinfo.name = 'myName', 这时 pastate 的响应式引擎会为自动为你异步高效更新相关视图。
详见项目 github: https://github.com/BirdLeeSCUT/pastate
原理图: