3

我有一个在 html 页面上呈现多个根的应用程序。每个根在网站上呈现不同(或可能相同)的页面或组件。该应用程序包含一个 redux 商店,因为每个根共享同一个应用程序。为避免冲突,为每个根生成一个 redux 存储。

现在 redux 商店有惰性负载减速器。在加载代码拆分组件时添加减速器。

为了适应这种情况,商店中添加了一个函数来从 redux 调用 replaceReducer。

因此,当加载组件并且还需要加载减速器时,问题就出现了。该组件需要从 redux 提供者访问根存储。

这是使用旧的 react 上下文 api 中的 contextTypes 来访问商店来实现的。包装器组件中的 contextTypes 拉取存储的当前根实例。

但是使用新的 react context api,这似乎不兼容。建议是创建一个上下文文件并在任何子组件中使用它。这样做,我需要将商店放入反应上下文提供者值中。但是这样做意味着反应上下文将只保存 1 个商店实例。

如何使它像旧的 react contextTypes 一样工作以相应地访问根级别提供程序上下文?

4

2 回答 2

4

我认为这里有一个误解。

本质上,您想要的是使用的上下文 API读取遗留上下文(这是 React Redux 当前提供的,以及您正在阅读的内容)。这行不通。旧的和新的上下文 API 完全不相关(即使它们服务于相同的用例)。contextTypes

当将来 React Redux 切换到新的上下文 API 时,你应该能够做到这一点。请注意,在任何一种情况下,都不鼓励直接将遗留上下文 API 与 React Redux 一起使用,您可能应该connect()改用它。

于 2018-10-25T07:31:05.333 回答
1

也许这篇文章会帮助您迁移到新的上下文 API。长话短说:您可以使用旧 API 传递数据并使用新 API 读取数据。不过,我不建议在您的特定情况下这样做。

于 2019-04-08T15:03:33.697 回答