人们通常如何处理React应用程序中的“全局”数据?
例如,假设我在用户登录我的应用程序后拥有以下数据。
user: {
email: 'test@user.com',
name: 'John Doe'
}
这是几乎任何应用程序组件都可能想要了解的数据 - 因此它可以在已登录或已注销状态下呈现,或者如果已登录,则可以显示用户的电子邮件地址。
根据我的理解,React 在子组件中访问此数据的方式是让顶层组件拥有数据,并使用属性将其传递给子组件,例如:
<App>
<Page1/>
<Page2>
<Widget1/>
<Widget2 user={user}/>
</Page2>
</App>
但这对我来说似乎不太方便,因为这意味着我必须通过每个组合件传递数据,才能将其传递到需要它的子组件中。
在React中是否有管理此类数据的方法?
注意:此示例非常简化 - 我喜欢将意图封装为组合件,以便可以根据需要彻底更改整个UI功能的实现细节。
编辑:我知道,默认情况下,在我的顶层组件上调用setState
会导致重新渲染所有子组件,并且在每个子组件中,我可以使用任何我喜欢的数据进行渲染(例如全局数据,而不仅仅是状态或props)。但是人们选择如何通知仅应呈现某些子组件呢?
setState
,让React重新渲染所有内容,而不管它的状态是否已更改?这当然有效,但并不适合渲染(https://dev59.com/wWAf5IYBdhLWcg3wXhyz#24719289). - Brad Parksthis.forceUpdate()
。我认为这是适当的方法,但您可以在此处找到更多替代方法和有关优缺点的信息:https://dev59.com/mWEi5IYBdhLWcg3wDoaV - David Hellsing