React 中的有状态逻辑和状态有啥区别?
Posted
技术标签:
【中文标题】React 中的有状态逻辑和状态有啥区别?【英文标题】:What's the difference between stateful logic and state in React?React 中的有状态逻辑和状态有什么区别? 【发布时间】:2019-08-03 14:55:10 【问题描述】:我正在检查hooks documentation,他们说得很清楚
这些组件的状态是完全独立的。钩子是一个 重用有状态逻辑的方法,而不是状态本身。
我想弄清楚这两件事之间的区别。
【问题讨论】:
每个组件在 UI= state (base on) 中都有当前的情况 ******** 状态是关于组件的简单(prop)或复杂(object)数据。 ******** 有状态逻辑是/是当前组件在此状态(函数)中的逻辑 ******* 您可以在组件之间共享这些逻辑(自定义挂钩,useFN() ) 或一个组件生命周期 (useEffect()) ******* 但是每个组件的状态都是私有/隔离的。 【参考方案1】:也就是说,当您在多个组件中重用自定义挂钩时,这些组件之间不会共享实际的状态数据。每次使用钩子都会有一个单独的状态数据实例。
如果您确实想共享状态,那么您将考虑使用 useContext
挂钩(也可以在自定义挂钩中使用,这意味着挂钩的多次使用可以共享状态)。
【讨论】:
【参考方案2】:状态是描述 UI 当前状态的值的组合。 它可以在组件之间共享,因为它们订阅了它的更改,并且其中一些可以对其执行更改。
有状态逻辑是任何使用状态的代码,但在挂钩的情况下,我会将其定义为使用一个或多个挂钩创建的行为。这就像您要添加到组件中的特权。一个 perk 就是一个很好的例子,因为它告诉你它的价值是特定于那个组件的,但是不止一个组件可以有这个 perk,这就是为什么它被称为可重用的。
【讨论】:
【参考方案3】:这意味着状态变量的新实例在该特定自定义挂钩的每个位置都被实例化。并且钩子中的状态不会在该自定义钩子的用户之间共享。它们对于该钩子的每个用户都是特有的。每次使用自定义 Hook 时,其中的所有状态和效果都是完全隔离的。
【讨论】:
【参考方案4】:State是类组件中的状态,改变状态的唯一方法是setState。
有状态逻辑是一些行为,包括带有状态的钩子和自定义钩子,使用行为来改变状态。
【讨论】:
以上是关于React 中的有状态逻辑和状态有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
[Redux/Mobx] redux和flux的区别是什么?