React 的开发其实就是复杂应用程序状态的管理和开发
复杂状态管理的两个原则
原则一:保证状态最小化
在定义一个新的状态之前,都要再三拷问自己:
这个状态是必须的吗?是否能通过计算得到呢?
在得到肯定的回答后,再去定义新的状态,
就能避免大部分多余的状态定义问题,也就能在简化状态管理的同时,保证状态的一致性
比如根据关键字搜索的场景,搜索结果可以根据关键和原始数据计算得到,可以使用useMemo保存过滤结果,
而不是再为过滤结果声明一个state
原则二:避免中间状态,确保唯一数据源
比如在需要根据URL查询数据的场景,查询条件在url,同时页面有配置条件的交互
那么直接将 URL 作为唯一的数据来源,状态的读取和修改都是对 URL 直接进行操作,
而不是通过一个中间的状态保存条件
(URL 变化时,同步查询关键字到 State;State 变化时,同步查询关键字到输入框; 用户在输入框输入的时候,同步关键字到 URL 和 State),
这样就简化了状态的管理,保证了状态的一致性