javascript - 如何在 react 中的不同组件库之间共享上下文?

在 React 中,有一种简单的方法可以在多个组件层中共享“信息”。这是通过使用上下文

import {UserCtx} from "./stores/UserCtx"; 
<UserCtx.Provider value={new user(info)}>
    <SomeComponent />
</UserCtx.Provider/>

然后在某个组件中:

import {UserCtx} from "./stores/UserCtx";
function SomeComponent() {
    const userData = React.useContext(UserCtx);
    return <div>JSON.stringify(userData)</div>
}

然而,这要求上下文对象定义对所有对象都是可见的。因此,当创建一个组件库时,它真的不能被使用吗?

在上面的“示例”中说 SomeComponent 将是一个库组件,我如何将主应用程序的上下文共享给该组件?通过添加属性来共享似乎有些牵强,在这一点上我还不如直接提供用户(或任何上下文存储)?

最佳答案

您所有的组件库都应该是产生值(value)的组件的子组件。也就是说,如果您的组件是暴露给 DOM 的主要组件,那么值应该位于该顶部,以便任何组件都可以使用上下文。

请注意,上下文可以很好地帮助您避免钻取组件。如果您需要比这更大的灵 active ,Redux 可能会为您提供更多功能。

https://stackoverflow.com/questions/63993563/

相关文章:

javascript - 如何在 React Native 中更改原生 Picker fontSiz

python - 如何在 Kotlin 中正确反转链表?

python - 有没有办法在 python 中抓取没有 Selenium 的 JavaScript

python - 为什么 Keras 不返回 lstm 层中细胞状态的完整序列?

html - css的级联顺序

angular - 如何避免@types 包引入的补丁级别增加带来重大变化的问题?

linux - 是否可以为 `git clone` 操作指定超时?

python - 如何使用 python 编辑相机帧?

firebase - 使用带有 Flutter Web App 的 http 包发布到 Cloud

postgresql - Cloud SQL (postgres) 外部数据包装器连接超时到副本实例