您需要州管理图书馆吗?
前几天我在浏览LinkedIn时,一个投票引起了我的注意。
你最喜欢的 React 状态管理库是什么?为什么?
我自然觉得投票中缺少一个选项,于是留了言。我回复说,我觉得用上下文 API 实现一个自定义钩子就足够了,我们来讨论一下。
什么是状态管理库?
在探讨状态管理之前,我们首先需要明确“状态”的定义。状态是内存中用于存储数据(几乎任何数据)的空间。例如,复选框的状态可以是选中或未选中(真或假),这些都是它的状态;存储用户的姓名(字符串)或偏好设置数组也是一种状态;诸如此类,不胜枚举。
那么,什么是状态管理呢?这些状态/变量需要以某种方式进行交互,无论是读取值还是设置值。简单来说,状态管理就是如何与变量进行交互。
在 React 中,只要你只想在创建它们的组件内部操作状态,那么管理状态就很容易。React 的状态管理库使得从任何地方与状态交互成为可能,而无需遍历 props。这很棒,这也是这些库如此流行的原因,但有没有更好的方法呢?
什么是上下文 API?
context API是一个默认的 React hook,用于允许任何子组件访问数据(对象、函数、字符串等)。
当我们将此 API 与自定义钩子结合使用时,它的功能会更加强大。我们可以传递对象和getter函数setter,这些函数可以用于读取或修改状态(正如您所预期的那样),或者可以使用一些函数一次性设置多个状态,甚至以特定格式返回数据,例如用于 API 调用。
我们如何使用上下文 API?
这里我写了一个非常简单的钩子函数,用于存储人的姓名。它存储名字和姓氏,你可以获取和设置它们。它还会将这两个名字连接成一个长的名字,以便从上下文中读取。虽然你实际上不需要这样做,但它展示了如何以格式化的方式返回数据。此外,还有一个函数可以让你同时设置这两种状态。
请看一下代码,正如我所说,它并不复杂,它只是一个示例,说明可以做什么,而不是一个需要遵循的模板。
最后想说的
React 本身已经拥有如此强大的功能,我们还需要状态管理库吗?也许需要,也许不需要。无论如何,如果您使用状态管理库,请告诉我原因。期待您的评论。
非常感谢您的阅读。
文章来源:https://dev.to/link2twenty/do-you-need-a-state-management-library-29o6
