关于react.js:React状态管理库现状

37次阅读

共计 1815 个字符,预计需要花费 5 分钟才能阅读完成。

状态治理的产生

  • 为什么须要状态治理

    状态治理随同着古代前端框架的崛起而诞生,在经典的单页利用中,组件外部状态随着组件的挂载而产生,销毁而销毁,全局状态则随着利用挂载而始终存在,这时候,全局状态的共享,传递,变更就被抽离进去成了一个通用的解决方案。

    Vue 与 React 都有较为简单的全局状态管理策略(Store 模式,Context),然而当利用足够简单,全局状态较多的时候,还是须要第三方的状态治理库进行对立治理。

  • React 体系的状态治理

    相比于 Vue 的官网举荐,React 因为官网并没有明确举荐库,理论状况就会更盘根错节一些。在晚期阶段,Redux 根本占据了最支流地位,然而因为其过于繁琐的模版代码,让后期开发与前期保护都变得麻烦至极,Mobx 怀才不遇,被很多开发者认可而应用。直到 React 16.8 版本引入了 Hooks,Redux 受到越来越多的批评,状态治理库也随着产生了一些变动。Redux 退出了 Redux Toolkit,Recoil 的呈现,pmndrs 三大状态治理 Zustand、Jotai、Valtio 的崛起,还有小众的 Rematch, Hookstate, Akita,React 状态治理库更加的百花齐放。

下一代状态治理库

  • Redux 与 Mobx 的问题

    Redux 因其繁琐简短的语法与个性,让开发者往往要写大量的模版代码,加上异步解决须要用到复杂度更高的 Redux 中间件,让开发者不胜其烦。话虽如此,在最新的 npm trends 中,Redux 的下载量还是居高不下,因为通过多年的考验,社区的生态与解决方案也是最为齐备的,如果当初须要应用 Redux,那么留神肯定要应用其官网举荐的 Redux Toolkit,写法简化了很多。

    Mobx 是一个响应式编程库,相比于 Redux 少了很多模版代码,不过因为其理念与 React 不太相符,被称为没有 template 的 Vue,有很多相似于 Vue 的新增概念,比方 observable, computed, reaction, autorun… 对于新人来说多了更多的心智累赘,再加上其对代码的构造与实现没有限度,会让团队中状态治理的代码比拟凌乱,Mobx 也始终没能取代 Redux。

  • Zustand、Jotai、Valtio

    这次咱们重点须要介绍的,是 pmndrs 所属的三个状态治理库,pmndrs 是一个开源开发者个体,开源了很多有新意或者细分畛域的工具,这三个状态治理库的次要开发者都是 Daishi Kato。因为 React 状态治理库的长期混沌状态,没有一个库能接替 Redux 的大旗一统全局,三个状态库都是为不同的细分畛域而存在。

    Zustand,为代替 Redux 而生,也是现阶段举荐大家应用的状态治理库,它的 npm 下载量曾经和老牌选手 Mobx 并驾齐驱了,并且增长趋势非常可观。

    其最次要的特点就是 api 极其简洁,打包后的大小仅为 1kb,然而性能上却能完满代替 Redux,被越来越多的开发者举荐。

    既然有个这么优良的 Redux 替代品,为什么 pmndrs 还要推出另外两个库呢?这里就不得不先说 Recoil,这是 Facebook 外部创立的库,在 20 年 5 月被 Dave McCabe 在演讲中颁布了进去,起初被开源。这个库带来了一个新的理念,原子状态。Redux 保护的全局状态个别是对象模式,外面蕴含了多个状态,被封装成一个整体的 store。Recoil 则是将状态宰割为一个一个的最小单元,这与 Hooks 的理念是统一的。因为 Recoil 有着 Facebook 官网背景,加上新的状态治理理念彻底摈弃了 Redux 的固有的思路,与 Hooks 深度符合,所以一经面世就有很大的关注度。然而因为 Recoil 的 api 设计的有些怪异和繁琐,也始终没有很大的倒退态势。而 Jotai 这个库,就是从 Recoil 理念借鉴而来的,然而提供了一套更简洁明了的 api,为得是能让原子状态这个理念更好的倒退上来。

    Valtio 则是与 Mobx 相似的库,实现原理也是与 Vue 相似,应用 Proxy 拦挡对象的读写操作,能够通过间接扭转对象属性的值,来实现响应式渲染更新。相比于 Mobx,Valtio 有着更简略间接的 api,更低的上手难度,大有取而代之之意。

    总的来说,如果你因为我的项目起因须要应用 Redux,那么应用 Redux Toolkit。否则的话,我更举荐大家应用更简洁轻量的下一代状态治理库,应用 Zustand 代替 Redux,Jotai 代替 Recoil,Valtio 代替 Mobx。

正文完
 0