Redux 在内部使用上下文 API 吗?

Posted

技术标签:

【中文标题】Redux 在内部使用上下文 API 吗?【英文标题】:Is Redux internally using context API? 【发布时间】:2021-10-27 03:36:27 【问题描述】:

我有一次面试,面试官问我 redux 是否在内部使用上下文 API。如果是,请提供详细说明。谢谢

【问题讨论】:

如果我清除了您的疑问,请接受我的回答:my_answer 【参考方案1】:

Redux 不使用 context api,它是一个用于状态管理的 javascript 库。您可以将 Redux 与任何应用程序(如反应、角度、vue、svelte 等)一起使用。但是,要在 react 应用程序中使用 redux,您需要 react-redux,这是 redux 的官方 react 绑定。​​

react-redux 使用 React 的 context api 使所有组件都可以访问 redux 存储。你需要 react-redux 的原因是,React 使用虚拟 dom - 这意味着你不能直接操作 DOM。在 Angular 等其他库中,我们使用 NgRx 库(用于 Angular)。

【讨论】:

【参考方案2】:

在内部,React Redux 使用 React 的“上下文”特性来使 Redux 存储可供深度嵌套的连接组件访问。作为 React Redux 版本 6,这通常由单个默认值处理 React.createContext() 生成的上下文对象实例,调用 ReactReduxContext。

Source

【讨论】:

【参考方案3】:

是的,但与您自己做的情况不同。

如果您要手动使用 Context,您通常会进行 值传播 - 将当前状态值向下传递到树中。这可能导致非常低效的重新渲染行为。请参阅this article 以获得更深入的解释。

另一方面,React-Redux 使用上下文进行依赖注入。存储在树下传递,永远不会改变,永远不会触发重新渲染。其余的一切都由 Redux 在内部完成,使用手动订阅。这样的性能要高得多。

【讨论】:

以上是关于Redux 在内部使用上下文 API 吗?的主要内容,如果未能解决你的问题,请参考以下文章

React 上下文 API 和/或 React-Redux-Thunk

如何在Redux中使用React Context API?

如何在Redux中使用Auth0 JWT访问API?

在 NextJS 应用程序中使用 React Context API 会禁用静态站点生成器吗?

如何将 React Context API 与 useReducer 一起使用以遵循与 Redux 类似的风格 [关闭]

Java 分析器在内部是如何工作的?