我正在阅读redux文档,它说:
。。。当我们有多个组件需要共享和使用相同的状态时,这种简单性可能会崩溃,尤其是当这些组件位于应用程序的不同部分时。有时这可以通过";提升状态向上";到父组件,但这并不总是有帮助。
在阅读redux的文档之前,我一直认为在整个应用程序中共享状态实际上可以通过提升状态来完成,但redux文档只是说,如果没有任何示例或解释,它并不总是有帮助。
有人能举一个例子说明什么时候解除国家武装没有帮助吗?我是新手,还没有遇到过必须通过使用redux等库在全球范围内共享状态的问题。
这并不是说不能。更重要的是,它会让事情变得非常丑陋,并迫使道具钻孔。如果我有一个全局用户,我不会被迫通过其他组件将该用户状态向下传递6个级别,这些组件除了将用户对象进一步转发到确实使用它之外,对用户对象没有任何作用。
这就是React.Context
和Redux的重点。
以下是使用钻孔和上下文的两个示例。<Parent/>
渲染状态,<Middle/>
不执行任何操作,<Child/>
渲染状态并允许您通过按钮进行设置。这是一个表显示了他们的依赖
一个问题是,如果你的树中有很多组件需要共享同一个状态,而它们位于很远的地方,你必须"提升";该状态传递给主祖先,然后必须将state prop
传递给每个子组件上的hierarchy
。
这会污染hierarchy
中每个组件的支柱。
然而,有了Context API
,您可以缓解这个问题。