如果状态仍在更新,React/Redux 如何运作?



请原谅我问了一个可能非常愚蠢的问题。

我的理解是,React 中的功能组件是功能性的,因为它们返回一个视图,它们的状态不能直接改变,必须通过setState()函数来完成。它们没有任何直接更改的变量,至少从某种意义上说,我们无法像var = 'something'一样更新它们。

我的困惑是,即使我们使用这些函数设置状态,仍然完全有可能让逻辑以特定方式依赖于该状态。功能组件中的过程代码较少,但它仍然通过在某些点修改此状态的useEffect存在。因此,即使我们通过函数来做到这一点,状态仍然在某些点上发生突变。

我认为我对函数式编程的理解可能存在差距。目前在我脑海中,FP似乎需要一个不会改变的程序最高级别的状态。但是大多数应用程序确实需要某种状态更改,如果不是在这种高应用程序级别,那么在本地组件级别,否则组件不会执行任何操作。

我现在理解的是FP =变化很少的状态,一切都是动态计算的,但顶部的状态保持不变

因此,即使我们在 redux 之类的东西中有化简器等,我们最终仍然在改变状态?是的,有这样一种状态变化的历史,但除此之外还有什么好处呢?不是讽刺的评论,我真的很困惑

我希望这是有道理的。我知道我错了,我只是不明白我怎么错了。如果有人可以帮助我,将不胜感激。

也许这过于简单化了,但在这个阶段,函数组件只是真正被这样调用,因为它们被定义为函数(而不是类)。后反应钩子,它们与函数式编程关系不大。函数式编程中的纯函数没有状态或副作用:每次使用相同的参数运行它时,它都会返回相同的输出,并且不会影响任何外部状态。React 功能组件不是这样——或者至少它们不必如此。如果你使用 useEffect、useState 等,你就不是在做函数式编程:你只是在编写一个恰好被定义为函数的反应组件。

此外,必须使用setState(或useState返回的函数)来管理状态与函数式编程无关:任何类型的内部状态管理都已经是反函数的,但你需要使用这些函数来修改 React 中的状态(在类和功能组件中)的原因只是为了让 react 可以跟踪何时进行了状态更改并排队组件以进行重新渲染。

最新更新