本周工作思考
zustand的使用及状态管理的一些思考
react开发中,状态管理至关重要,我们目前使用使用多种状态管理器:
useState或者useReducer,该hook也是一种状态管理器,作用范围是单个函数组件或者单个自定义hook,使用简单,易于理解;
useContext + useReducer,由于useContext的可用应用在任何跨组函数组件的,其作用范围也是多个组件,使用比较简单,易于理解
redux/react-redux,其设计目标就是全app可用的,使用比较复杂,有一定的理解门槛,其整个使用方式,我认为稍显啰嗦,不用简洁
zustand,最近在部分repo中引入了,目前在项目使用的较少,从使用经验上看,可以跨组件使用,比较简洁,易于理解;
部分class component使用了setState及React.createContext,以及react-redux的使用。
从技术本质上讲,状态管理器就是管理数据的一套代码结构,包括,状态数据收集,状态数据分发,状态数据存储三个核心功能,一般上实现了这三个核心功能,就可以称之为状态管理器,由于react的响应式设计理念,很多状态管理器使用函数编程理念实现状态管理,并且和react的render结合,使其本质被丰富的功能所掩盖,导致了很多初学者对其“高山仰止”,不明所以;社区里有非常多的状态管理器,大家在学习和理解其实现的时候,一定要从这个基本功能出发来理解其实现和思想,这样就不容易被花里胡哨的技术细节所误导,能抓住其核心实现。
状态管理器的共生性设计原则, 因为目前的系统实现中,多种状态管理是共存的,所以:1 要理解状态管理器的本质及其实现,2是了解各自状态管理器的不同作用范围,避免出现冲突,3是要有业务逻辑组件分拆的设计(可以参悟flutter中BLoC模式的思想);
实现一个基于react的功能,最重要,也是最体现设计心思的,是对状态划分和设计,要区分好应该用程序的状态和驱动UI的状态, 不是所有的UI驱动力都来自状态,也不是所有的状态都要去驱动UI;
从目前的使用来看,我更推荐在未来的全局状态中使用zustand,同时各功能做好设计共生性的考虑。
本周病休了几天,很抱歉耽误了部分工作进度,下周要想办法赶一下进度。天气炎热,另外之前新冠会导致免疫力降低,希望大家多注意防暑。