对 react.js 做了一个响应式 state 管理框架,欢迎取用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BirdyLee
V2EX    前端开发

对 react.js 做了一个响应式 state 管理框架,欢迎取用

  •  
  •   BirdyLee 2019-02-15 20:37:37 +08:00 2158 次点击
    这是一个创建于 2510 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前段时间参考 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

    原理图: pastate 原理图

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3123 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 04:53 PVG 12:53 LAX 20:53 JFK 23:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86