与 Redux 反应?那么“背景”问题呢?

2023-12-21

我通常在 Stack 上发布与代码相关的内容,但这更多的是关于社区总体想法的问题。

似乎有很多人提倡使用 Redux 和 React 来管理数据/状态,但是在阅读和学习两者时,我发现了一些看起来不太正确的东西。

Redux

在此页面底部:http://redux.js.org/docs/basics/UsageWithReact.html http://redux.js.org/docs/basics/UsageWithReact.html(通过 Store)它建议使用 React 'Context' 的“魔法”。

一种选择是将其作为 prop 传递给每个容器组件。然而,它变得乏味,因为即使通过演示组件,您也必须连接存储,只是因为它们恰好在组件树深处呈现容器。

我们推荐的选项是使用一个特殊的 React Redux 组件,它可以神奇地使存储对所有容器组件可用......

React

在 React Context 页面上(https://facebook.github.io/react/docs/context.html https://facebook.github.io/react/docs/context.html)它的顶部有一个警告:

上下文是一项先进的实验性功能。该 API 可能会在未来版本中发生变化。

然后在底部:

正如编写清晰的代码时最好避免使用全局变量一样,在大多数情况下您应该避免使用上下文......

不要使用上下文通过组件传递模型数据。通过树明确地串接数据更容易理解......

So...

Redux 建议使用 React 'Context' 功能而不是传递store通过“props”向下到每个组件。而 React 建议相反。

另外,Dan Abramov(Redux 的创建者)现在似乎在 Facebook(React 的创建者)工作,这让我更加困惑。

  • 我读得对吗?
  • 目前关于这个问题的普遍共识是什么?

上下文是一项高级功能,可能会发生变化。在某些情况下,它的便利性超过了它的缺点,因此一些库(例如 React Redux 和 React Router)选择依赖它,尽管它具有实验性质。

这里重要的部分是这个词图书馆。如果上下文改变其行为,作为图书馆作者,我们需要调整。但是,只要该库不要求您直接使用上下文 API,您作为用户就不必担心对其进行更改。

React Redux 在内部使用上下文,但它不会在公共 API 中公开这一事实。因此,您应该感觉通过 React Redux 使用上下文比直接使用上下文更安全,因为如果它发生变化,更新代码的负担将由 React Redux 承担,而不是您。

最终,React Redux 仍然支持始终将 store 作为 prop 传递,因此如果您想完全避免上下文,您可以选择。但我想说这是不切实际的。

TLDR:避免直接使用上下文,除非您真的知道自己在做什么。使用内部恰好依赖上下文的库是相对安全的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 Redux 反应?那么“背景”问题呢? 的相关文章

  • 我可以从 HTTP 请求中找到无线接入点的 BSSID(MAC 地址)吗?

    假设有人在咖啡店里无线连接到互联网 并向 johnsveryownserver com 发送 HTTP 请求 服务器端 有什么方法可以确定我的MAC地址吗 无线接入点他们连接到什么 请注意 我对他们机器的 MAC 地址不感兴趣 如果我无法使
  • 有没有办法让 React 为孩子自动定义“键”?

    我正在学习 React 我偶然发现了 动态儿童 的这个怪癖 带有代码示例的序言 Render Pass 1
  • iOS 11 浏览器图像错误

    在 iOS 11 中滚动页面时出现以下错误 在 Firefox Safari 和 Chrome 中 在 Android 设备中 不会发生该错误 这些是背景图像 我不知道这是否是导致错误的原因 图 2 显示了图像在 Android 中的用途和
  • Flask wtf.quick_form 运行一些 javascript 并设置表单变量

    我正在创建博客文章 到目前为止已经使用普通的 html 表单完成了 我所做的一个有趣的想法是运行 javascript onclick 并使用页面中的额外数据在表单中设置一个隐藏变量 这很好地传递到服务器并通过 request form 获
  • 将音频与视频流合并 Node.js

    我正在创建 YouTube 视频下载器并且正在使用ytdl core库 它无法下载带有音频的高质量视频 因为 youtube 将其放在另一个文件中 但我需要将其全部下载到一个文件中 我已经这样做了 app get download asyn
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些
  • AJAX:检查字符串是否为 JSON?

    我的 JavaScript 有时会在这一行崩溃 var json eval this responseText 当争论时会导致崩溃eval 不是 JSON 在进行此调用之前有什么方法可以检查字符串是否为 JSON 我不想使用框架 有什么方法
  • 在vscode中使用reactjs报错

    在 Visual Studio 代码中使用 jsx 语法 Visual Studio代码报错 请帮我 谢谢 符号 例如 而不是这样做 return lt button className square gt TODO lt button g
  • 如何从顺序键盘导航中删除 Vuetify 附加图标

    在带有 Vuetify 的 Vue js 应用程序中 我有一组用v text field并且其中有一个append icon为了切换文本可见性 如下所示
  • 如何滚动到div内的元素?

    我有一个滚动的div我想在点击它时发生一个事件 它会强制执行此操作div滚动以查看内部元素 我写的JavasCript是这样的 document getElementById chr scrollIntoView true 但这会在滚动时滚
  • 如何访问另一个 mobx 商店中的 mobx 商店?

    假设以下结构 stores RouterStore js UserStore js index js each of Store jsfiles 是一个 mobx 存储类 包含 observable and action index js只
  • 选中复选框时提交表单

    有没有办法在选中复选框时提交表单
  • React无限滚动scrollableTarget动态获取id?

    我在我的项目中使用react infinite scroll component 如何让scrollableTarget动态获取item id 我试过这样scrollableTarget item id 但它不起作用 必须与该 div 具有
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • WebRTC:通道、轨道和流与 RTP SSRC 和 RTP 会话之间的关系

    来自 Mozilla 网站 https developer mozilla org en US docs Web API Media Streams API https developer mozilla org en US docs We
  • ES6 模板文字的延迟执行

    我正在玩新的ES6 模板文字 http tc39wiki calculist org es6 template strings 我首先想到的是String format对于 JavaScript 所以我开始实现一个原型 String pro
  • ng-model 和值组合不适用于输入文本框

    我有两个输入文本框 我需要组合在两个文本框中输入的值并将其显示在第三个文本框中 如果我只使用value在第三个文本框中 Box 1
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • 如何更改订阅值?使用 rxJS

    我正在创建一个计时器 需要你的帮助 我刚刚学习 Angular 和 rxJS 对此我有一些疑问 我正在创建一个具有启动 停止 暂停 重置功能的计时器 并且 btn Reset 必须将我的计时器 暂停 到 300 毫秒 怎么做 D 我的启动定

随机推荐

  • 抽象类返回

    抱歉 如果这是一件小事 我创建了一个带有一些子类的抽象类 控制器类创建请求子类类型的抽象类类型的对象 并返回实现的抽象类 子类具有特定的属性 我无法访问返回对象的这些属性 因为这是抽象类默认类型 所以我尝试进行转换 但这会出现错误 item
  • 在 Heroku 上运行 Rails 单元测试

    我已经将一个应用程序部署到 Heroku 一切正常 问题是我无法远程运行单元测试 我试过了 heroku rake test units and heroku rake db test prepare 但对于两者 我都得到了大量的堆栈跟踪
  • 重命名远程分支

    我创建了一个本地分支 X 在某个时候我将其推送到远程服务器 来源 git push origin X 我意识到将分支命名为 X 并希望将其命名为 Y 是一个坏主意 问题是我已经将分支推送到存储库 从服务器中删除它并以这样的新名称推送它是否安
  • 在 Marshmallow 上不会调用 Spannable String 的绘制方法

    我的应用程序中有一个日历 日历是一个带有每个日期按钮的 GridView 我尝试用下面的课程给它们上色 public class CircleSpan extends ReplacementSpan private final float
  • 在 ActionBar 中获取 Switch 实例

    我设法在操作栏内放置了一个开关 如 Wi Fi 设置中一样 我把以下内容主菜单 xml menu 文件夹内的文件 menu menu
  • 保存和重用 SPARQL 查询的结果

    我正在使用 Jena 通过 Eclipse 查询 owl 文件 我想做一些连续的查询 每个新查询都将使用前一个查询的结果 我想在不同的 SELECT 中执行此操作 并每次保存查询结果 以便在新查询中再次使用它 我不想自己插入变量的值 而是从
  • JDialog 取消按钮

    如何在 Swing 中设置取消按钮JDialog 即如果用户按下键盘上的 取消 键 其操作会自动执行的按钮 通过以下方式向对方提供默认操作setDefaultButton对话框根窗格的方法 如果这有帮助 我正在寻找 WinForms 的类似
  • d3js在地图上强制布局

    我正在尝试在地图上放置一个力布局节点系统 某些节点在我使用的 json 文件中具有 lon 和 lat 值 其他节点只需连接 无需地理参考 我想将具有 lon 和 lat 值的节点放置在适当的位置 而其他节点只是为了连接 我发现了我遵循的这
  • Sqlalchemy 无法在事务块内运行

    我正在尝试从 python 脚本在 redshift 中运行查询 但出现错误 sqlalchemy exc InternalError psycopg2 InternalError ALTER EXTERNAL TABLE cannot r
  • 使用 childRouter 时的 Durandal 路由器/生命周期事件

    在使用 Durandal 构建的单页应用程序中 我有一个设置视图 其中包含不同的部分 我使用 childRouter 来解析不同的部分 在此应用程序中 许多代码挂钩到 Durandal 使用的组合生命周期事件 例如 这个自定义绑定 ko b
  • 如何引发 Shutil.SameFileError?

    我正在努力提高一个shutil SameFileError用于单元测试但未能成功 问题是没有引发错误 import unittest class TestErrors unittest TestCase Unit testing of er
  • 如果未通过单元测试,如何拒绝来自本地存储库的原始存储库的 git 推送?

    我有一个拥有完全访问权限的原始存储库 并且我不希望将代码成功推送到此存储库 除非正在推送的代码成功通过了我的单元测试 我看到了许多 git hooks update 脚本的示例 它们似乎分为几个不适合我的用例的类别 例如 在 http gi
  • 检测 Windows Phone (7.1) 中的捏合缩放

    根据 Silverlight 工具包 手势侦听器将被视为已弃用 对于所有 Windows Phone 7 1 SDK 开发 应将手势侦听器视为已弃用 并且没有其他可用的建议 在没有手势侦听器的情况下 在 WP7 中检测捏合 缩放手势的最佳方
  • ADO.NET 2.0 Interbase 驱动程序和 ASP.NET 错误的程序集引用?

    我正在寻找超过 12 个小时来找到针对这个特定问题的正确解决方案 我有一个利用 Interbase XE 数据库的 ASP MVC NET Framework 4 5 应用程序 只要我在自己的机器上本地运行就可以正常工作 但是 当我尝试将站
  • 禁用 docker-compose 项目的自动启动

    我有一个使用 Docker for Mac 的 docker compose 项目 它会在我启动计算机时自动启动 我通常以以下方式开始项目docker compose up d 但即使是跑步docker compose stop在关闭自动启
  • 如何使用 pngBitmapEncoder 保存图像

    根据图像编码示例here http msdn microsoft com en us library ms748873 aspx imageformats我应该能够使用png位图编码器 http msdn microsoft com en
  • 使用 C++ lambda 进行部分应用?

    编辑 我在下面使用咖喱 但已被告知这是部分应用 我一直在试图弄清楚如何用 C 编写柯里函数 而且我实际上已经弄清楚了 include
  • 有 Windows 的良好 Valgrind 替代品吗?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 当我发现 Valgrind 仅适用于 Linux 时 我正在研究 Valgrind 来帮助改进
  • 如何在C#中获取TPL任务线程的引用?

    当我创建任务时 Task task Task Factory StartNew gt someMethod args 在 C 4 0 中 如何获取此任务的线程的引用 该任务是否有可能在创建该任务的同一个线程中执行或生成多个线程 Update
  • 与 Redux 反应?那么“背景”问题呢?

    我通常在 Stack 上发布与代码相关的内容 但这更多的是关于社区总体想法的问题 似乎有很多人提倡使用 Redux 和 React 来管理数据 状态 但是在阅读和学习两者时 我发现了一些看起来不太正确的东西 Redux 在此页面底部 htt