react usecontext和全局变量的区别是什么?



react context的功能是方便组件传递值,但它不响应。它需要与用户合作,以实现响应。使用全局变量和设置一层usestate有什么区别,也可以达到组件透明传输的效果。我可以想到上下文和全局变量之间的区别是上下文只向包装组件传输数据,而全局变量没有这样的限制

propscontext是react在组件之间移动数据的方式。内置的事实是,如果你渲染源组件,并且它有一个新的prop/上下文值,那么目标组件也会渲染。子组件不需要以某种方式在props/context上注册一个事件监听器,然后在值改变时设置状态;道具/上下文改变就足够了。

如果你使用全局变量,那么是的,原则上它可以对所有组件可用。然而,你需要编写代码来监听全局变量的变化(例如,使用事件发射器或可观察对象),然后,当全局值发生变化时,每个使用它的组件都需要设置局部状态,以便呈现自身。

context只向包装组件传输数据,而全局变量没有这样的限制

虽然您将其描述为限制,但它有时是一个非常有用的好处。例如,假设你有一个Theme对象为你的应用程序设置颜色。它是通过上下文提供的,你的ui组件使用它来设置自己的样式。

但是您还想让用户更改主题,并看到更改的预览。由于主题使用上下文,你可以创建一个新的上下文提供程序,它只包装应用程序的预览部分。预览中的组件将使用修改后的主题,而应用程序的其他部分则正常运行。

相关内容

最新更新