React props:我应该传递对象或其属性吗?有什么区别吗?

2024-01-06

传递 props 时,我应该将整个对象传递给子组件,还是应该先在父组件中单独创建 props,然后将这些 props 传递给子组件?

传递整个对象:

<InnerComponent object={object} />

首先单独创建需要的道具:

<InnerComponent name={object.name} image={object.image} />

首选哪一个?如果需要的话,我应该使用什么作为衡量标准来使用其中一个?


根据最小特权原则 https://en.wikipedia.org/wiki/Principle_of_least_privilege,这是正确的方法:

<InnerComponent name={object.name} image={object.image} />

这限制了InnerComponent避免意外修改原始对象或访问不适合该对象的属性。

或者,可以从原始对象中选取属性并作为 props 传递:

<InnerComponent {...pick(object, 'name', 'image')} />

如果有许多属性需要列出,那么可能有一个 prop 接受一个对象:

<InnerComponent object={pick(object, 'name', 'image')} />

P.S.

import { pick } from "loadash";

or

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

React props:我应该传递对象或其属性吗?有什么区别吗? 的相关文章

  • Vue.JS 2.5.1:未捕获的语法错误:意外的令牌导出

    我试图使用 VueJS 和 Bootstrap Vue 制作一个单选按钮 但是当我制作它时发生了这种情况 我预计这是语法错误 就像它所说的那样 但我似乎找不到任何线索 所以我尝试复制粘贴代码 这是 test radio php 的完整代码
  • Webpack 缺少 CommonsChunk 和 extract-text-webpack-plugin 模块

    我正在跟进Maxime Fabre 的 Webpack 教程 https blog madewithlove be post webpack your bags 我正在尝试获得一个非常简单的 webpack 包 其中包含 1 个入口点和 2
  • 在 Javascript 中本地化字符串

    我目前正在使用 resx文件来管理我的 NET 服务器端资源 我正在处理的应用程序还允许开发人员将 JavaScript 插入各种事件处理程序中以进行客户端验证等 对我来说本地化 JavaScript 消息和字符串的最佳方法是什么 理想情况
  • 使用 requirejs 加载外部脚本而无需访问配置

    我正在尝试在我正在编写的插件中加载数据表 javascript 库 问题是 当我加载外部资源时 我会遇到冲突 因为当我调用 require 时 数据表与某些内容发生冲突 这是错
  • 夜间值班。单击带有文本的元素

    我遇到问题 无法单击具有某些独特文本的网页元素 我有这样的结构 div class wg wagon type title Text div 我试试这个 click wg wagon type title contains Text 但我有
  • 如何为 HTML5 音频元素制作加载栏?

    我正在尝试为 HTML5 音频元素制作一个加载栏 显示加载 缓冲的百分比 对于视频标签 可以使用以下方法进行计算 video buffered end 0 video duration 但我无法让它与音频标签一起使用 它只是返回一个固定值
  • 如何在提交表单之前删除自动数字格式?

    我正在使用 jQuery 插件自动数字 http www decorplanit com plugin 但是当我提交表单时 我无法删除之前字段上的格式POST 我尝试使用 input autonumeric destroy 和其他方法 但它
  • Nodemailer:从未收到问候语

    当尝试使用 Nodemailer 在 Node 内发送电子邮件时 https github com nodemailer nodemailer https github com nodemailer nodemailer 调用sendMai
  • 在 JavaScript 中定位提示弹出窗口

    我有一个如下所示的 JavaScript 提示 我想将提示放在屏幕中心 如何使用 javascript 做到这一点 function showUpdate var x var name prompt Please enter your na
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • 如何在一段特定时间后在后台运行 ajax 调用? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在一段特定的时间后显示警报消息 您想继续吗 如果用户同意 则 ajax 调用必须在后台运行 否则取消 ajax 调用 那么请告诉我
  • 更新 Google 地图流量层而无需重新加载页面

    我的页面中嵌入了 Google 地图 我使用 initMap js 函数来初始化地图 function initMap var map new google maps Map document getElementById t map zo
  • 如何将函数传递给 JavaScript Web Worker

    我想通过一个 或多个 函数传递postMessage 给网络工作者 因为我无法引用常规文件 为了启动 Web Worker 我将一个对象 URL 从 Blob 创建 传递给Worker构造函数 然后我传递一条消息 但到目前为止还没有在消息中
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 带时间戳的 Firestore 查询

    如果它是文本字段 我可以使用 where 条件获取数据 但是当我尝试对时间戳字段和日期执行相同操作时 事情不起作用 这是我的代码 home ts firebase firestore collection cities where time
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 如何使用 Jest 测试对象键和值的相等性?

    我有一个mapModule我在其中导入组件并导出它们 import ComponentName from components ComponentName export default name ComponentName 我该如何测试ma
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • 如何修复nodejs Express服务器中的“MulterError:意外字段”?

    我正在设置一个服务器来从客户端上传 zip 文件 服务器运行express和multer来执行此操作 上传文件时 服务器抛出 MulterError 意外字段 错误 我无法弄清楚是什么导致了它 我尝试过使用 png 图像 效果很好 但对于
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr

随机推荐

  • webpack 构建中意外的令牌“导出”

    我收到的错误是 webpack 无法将导出识别为关键字 我已经更新了 babelrc 并安装了必要的依赖项 我确信这与不理解 es6 有关 但我找不到解决我的问题的解决方案 以下是查看我的依赖项 错误和重要文件所需的文件 index scs
  • Google Go 语言中哪些类型是可变的和不可变的?

    在 Google Go 中 我读到字符串是不可变的 好吧 但是是 int 吗 那么其他类型呢 作为一个稍老的程序员 我更喜欢可变性 尽管我知道不变性的好处 但我更喜欢危险地生活 了解哪些类型是可变的或不可变的将非常有帮助 更新 我最关心的是
  • tools/bazel.rc 如何与外部工作区依赖项一起使用?

    如果我将外部 Bazel 项目作为 WORKSPACE 依赖项拉入 并且该项目有一个 tools bazel rc 添加了一些默认构建选项并定义了一些构建 config 选项 那么它到底是如何工作的 构建这些外部构建目标时是否使用这些默认选
  • 如何显示 Cabal 项目的依赖关系树

    我在用cabal v2 build构建一个项目 但它在我不直接依赖的包上不断失败 有没有办法与cabal列出包的所有依赖项 最好以树格式 这样我就可以看到我所依赖的调用构建失败的内容并 希望 摆脱它 Try cabal plan https
  • 如何保存 HTML5 画布?

    目前我正在使用画布2图像 http www nihilogic dk labs canvas2image 保存 HTML5 画布的内容 然而 它似乎不适用于 Google Chrome 欢迎任何有关如何解决该问题的想法 canvas toD
  • 我可以使用委托的单个实例来启动多个异步请求吗?

    只是想知道是否有人可以澄清使用BeginInvoke当您想要进行多个异步调用时 在某个委托的实例上 因为 MSDN 文档根本没有真正涵盖 提及这一点 我想做的是类似以下的事情 MyDelegate d new MyDelegate this
  • 我的表需要更多标准化吗?

    我正在制作一个简单的公共现金簿数据库表来计算我和我的朋友一起吃饭花了多少钱 我的第一个表只是一个表 它有一个具有非原子值的 person 列 所以我将表分成两个表 如上所示 但我不确定这是否足够正常化 是否存在任何应该规范化的功能依赖性 但
  • Google 数据源 JSON 无效吗?

    我正在使用他们的Google数据源来实现Python库 http code google com apis visualization documentation dev gviz api lib html tojsonexample 我希
  • Android 2.3 的 ActionBarCompat 中没有 FEATURE_INDETERMINATE_PROGRESS -

    我在用着 requestWindowFeature Window FEATURE INDETERMINATE PROGRESS setSupportProgressBarIndeterminateVisibility true setSup
  • regsvr32 是否有 .NET 或 Win32 版本?

    regsvr32 是否有 NET 或 Win32 版本 我想用代码注册一个 COM DLL 而不是使用 regsvr32 程序 注册程序集的标准方法是调用导出的DllRegisterServer装配体上的功能 http msdn micro
  • 如何以编程方式重新加载 Visual Studio Code 窗口?

    用户可以通过编辑器的 命令面板 运行 重新加载窗口 来实现此目的 然而 从扩展创作的角度来看 这并不像立即提示用户那么简单 期望的结果是将当前的实施this https github com xabikos vscode javascrip
  • 从 NSOperationQueue 取消 NSOperation 导致崩溃

    我正在尝试构建一个下载管理器类 它将所有异步下载 每个操作都有自己的线程 操作打包到 NSOperation 子类中 以便稍后将它们添加到 NSOperationQueue 中 下载管理器类 单例 还公开了一些方法来处理队列并取消符合某些要
  • 在本地文件夹中安装 gem

    我在使用的共享计算机上的权限有限 因此无法按照习惯的方式安装 gem 例如 gem install request log analyzer ERROR While executing gem Gem FilePermissionError
  • 组合的自定义过滤器

    我正在使用 Webix 用户界面 它允许定义组合控件 如下所示 webix ui view combo options One Two Three 它工作得很好 除了一瞬间 默认情况下 组合按文本统计过滤数据 输入 o 后 组合列表将仅显示
  • 如何将不同的类封装在一个类中并保持其独特的方法? (delphi中的多重继承?)

    我目前正在重写一个免费的教育数字电路模拟器 以为其功能添加惯性 我的问题是如何将事件分派到原始类 并向它们添加预先阐述 我有这样的事情 TC1 class ID integer Connections array integer of Pi
  • 向服务器发送数据时 Websocket 与 REST

    背景 我们正在编写一个类似 Messenger 的应用程序 我们已将 Websockets 设置为收件箱和聊天 Question 我的问题很简单 什么时候有什么优点和缺点从客户端向服务器发送数据使用 REST 而不是 Websocket 我
  • 在 UITableView 中添加多个自定义单元格

    虽然这是最常被问到的问题之一 但我找不到一个全面的答案 我需要在 UITableView 中有自定义单元格 有些包含标签或文本字段 有些包含图像和按钮 我为每种类型的细胞制作了单独的类 我正在使用包含多个部分的 GroupStyle 表 现
  • (function($) {})(jQuery); 是什么意思?意思是?

    我刚刚开始编写 jQuery 插件 我编写了三个小插件 但我只是将这行代码复制到我的所有插件中 而实际上并不知道它的含义 有人可以告诉我更多关于这些的信息吗 也许有一天在编写框架时解释会派上用场 这是做什么的 我知道它以某种方式扩展了 jQ
  • (多个)MultiDataTrigger 与转换器的效率

    我目前正在分析一些使用广泛使用的样式的 XAML多数据触发器 http msdn microsoft com en us library system windows multidatatrigger aspx 每种样式 8 10 个多数据
  • React props:我应该传递对象或其属性吗?有什么区别吗?

    传递 props 时 我应该将整个对象传递给子组件 还是应该先在父组件中单独创建 props 然后将这些 props 传递给子组件 传递整个对象