在Redux中使用getState和anti
我在一个jQuery应用程序中首次使用Redux,并创建了一个小的可观察实现。 可观察对象正在响应状态对象的多个属性的更改,并在状态本身发生更改时对DOM进行更改。 如果我的observable回调需要2个属性值来完成它的任务,我会观察这两个值,然后使用这些值来更新UI。 可观察到的事物根本不触及状态。 它们只是在回调中将其呈现给observable,以便它可以用来更新状态的UI。
我正在进行的项目是一个重构,因此我在事后添加了Redux。 有时候,我意识到我需要一段代码中的特定状态属性,我可能没有时间来适当地重构为可观察对象。 在这些情况下,我会在商店中调用getState
来获得我需要的,并继续前进。 我不禁感觉这种方法有点缺陷。
是否使用store.getState
,我需要它认为是反模式? 在使用store.getState
时,我们应该避免使用它们的显式用例吗?
当你太自由地使用store.getState()
,最终store.getState()
全局状态传递给随机组件。 你有冒险引入组件和部分状态之间的相互无关的联系,这是反模式。 您应该只调用getState
,原因有两个:获取应用程序的初始状态,以及store.subscribe()
回调中的store的更新逻辑。
就你的观察者而言,在一个典型的基于组件的视图层(如React)中,你真正需要在redux应用程序中观察到的唯一事情是整个应用程序状态,而不是整个应用程序状态。 整体状态的变化已订阅并从顶层组件中逐渐减少。
然而,因为你正在重构一个Jquery应用程序,我认为你可以接受使用observables。 有一个名为重新选择的图书馆,如果你不喜欢自己滚动,你可以用它来达到这个目的。 它可以帮助你从全局状态的任意部分计算状态并提供高效的记忆,所以同样的输入不会被重新计算。
有时候,我意识到我需要一段代码中的特定状态属性,我可能没有时间来适当地重构为可观察对象。 在这些情况下,我会在商店中调用getState来获得我需要的,并继续前进。 我不禁感觉这种方法有点缺陷。
您可以在这种情况下实现的一个简单的插入式解决方案是使用Reducer中的事件发射器将全局状态片段传播到需要它们的特定Jquery组件。 这将使您不必传递全局状态,保持组件隔离。
链接地址: http://www.djcxy.com/p/89543.html