将子元素添加到 React 元素

2024-01-02

如何向 React 组件添加子组件。this.props.children似乎是只读的,所以不能直接改变它。

假设我有

var myComponent = <MyComponent someProp="foo"><h1>heading</h1><h2>another heading</h2></MyComponent>

我想补充一点<p>some text</p>作为第三个孩子。

我想完成这个:

var newChild = <p>some text</p>
myComponent.props.children.add(newChild)

这样结果就是

<MyComponent someProp="foo"><h1>heading</h1><h2>another heading</h2><p>some text</p></MyComponent>

(显然 add 函数不存在,但问题是该怎么做)


The childrenprop 表示插入到 JSX 元素的标签之间的内容(请参阅docs https://facebook.github.io/react/docs/jsx-in-depth.html#children-in-jsx),并且不应该直接修改。事实上,尝试对其中的任何内容进行修改this.props通常是不可想象的。

为了解决您的特定问题,您似乎希望定义将哪些子项添加到组件中,如下所示:

// parent component's render method
render() {
  const elements = ...; //build up an array of elements
  return (<MyComponent someProp="foo">
    <h1>heading</h1>
    <h2>another heading</h2>
    {elements}
  </MyComponent>)
}

类型的根元素MyComponent然后就会知道如何使用这些子项进行正确的渲染,这些子项可以在this.props.children。如果此组件需要主动触发包含文本,那么您可以包含一个文本更改回调作为 propMyComponent,或者只使用组件状态(从而完全避免使用该段落的子级)。

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

将子元素添加到 React 元素 的相关文章

  • 如何检测不渲染 .png 透明的浏览器

    我有这段代码可以根据一周中的某一天渲染图像 但在 IE6 及更低版本以及可能其他一些浏览器中 它不会呈现 png 不透明度 所以我想稍微改变一下 这样它就会检测到不渲染 alpha 透明度的浏览器 并告诉他们加载这个图像 img horar
  • Google 文档 - 以编程方式将鼠标点击发送到大纲窗格中的项目

    在 Google 文档中 您可以打开大纲窗格并查看文档中的所有标题 您也可以单击标题 视图将滚动到标题 我的问题是如何使用 Chrome 扩展中的 JS 以编程方式模拟鼠标单击 以将视图滚动到所需的标题 我尝试了以下代码 但没有任何反应 u
  • 从 JavaScript 将参数传递给 p:remoteCommand

    我想将值传递给remoteCommand来自 JavaScript 如果这是可能的 我该如何做到这一点以及如何在支持 bean 中接收它们 对的 这是可能的 如何执行此操作取决于 PrimeFaces 版本 你可以在PrimeFaces 用
  • Angular - Safari 无法正确显示 DOM

    我是 Angular 的新手 使用 Angular 4 我尝试通过在关联的组件类文件中设置属性来更新特定元素 但是 除非我尝试强制重新绘制网页 通过调整窗口大小等 否则页面不会更新 我打开检查器 看到 DOM 已更改 但显示与元素检查器中的
  • JavaScript 逻辑赋值是如何工作的?

    在 javascript 中 如果我们有一些代码 例如 var a one var b q a alert b 逻辑 OR 运算符会将 a 的值分配给 b 并且警报将为 一 这仅限于作业还是我们可以在任何地方使用它 似乎空字符串被视为与未定
  • 从 url 角度加载模板并在 div 内编译

    由于我是 Angular JS 的新手 我想知道如何加载外部模板并将其与一些数据一起编译到目标中div 例如我有这个模板
  • 将数字限制为段的最优雅的方法是什么?

    比方说x a and b是数字 我需要限制x到段的边界 a b 换句话说 我需要一个钳位功能 https math stackexchange com q 1336636 clamp x max a min x b 有人能想出一个更易读的版
  • apollo 客户端从存储中删除而不发生突变

    我需要通过 id 从本地存储中删除一条 记录 而不使用突变 因为服务器不支持突变 我尝试像这样手动访问商店 delete this apolloClient store getState apollo data 1112 这会删除记录 但是
  • Material.Angular.io mat-autocomplete [displayWith] 函数更新范围变量

    我遇到了一个问题 我可以在实例化 mat autocomplete 的组件控制器中访问本地声明的变量 我面临的问题是局部变量被困在这个范围内 我无法更新它们 有关更新 mat autocomplete 范围变量的任何想法或想法 最终我要做的
  • 两个日期之间间隔 15 分钟 javascript

    问题 我需要将两个日期 时间戳之间的所有 15 分钟时隙 日期格式 2016 08 10 16 00 00 创建为 HH mm 格式的数组 其中分钟限制为 00 15 30 45 示例 中午 12 30 到下午 2 30 将 gt 12 3
  • 使用默认值反应路由参数

    我正在使用 React 功能组件和 React Router v5 我正在使用 useParam 函数来获取参数 当参数不可用或未定义时 如何设置参数的默认值 我的路由器代码
  • javascript onclick 进入新窗口

    这是我的代码
  • backbone.js:视图中影响集合中不同模型的按钮

    我刚刚开始使用backbone js 到目前为止 我真的很喜欢它 我有这样的事情 ModelA ModelB ViewA ViewB ModelA 持有 ModelB 的集合 如何使用按钮构建模型 B 的视图 单击该按钮会更改集合中下一个
  • 在部分渲染时执行 JavaScript

    我有一些 JavaScript 代码 我想在用户单击其文件夹之一后执行 它会触发 show 操作和 show js erb 从而呈 现部分内容 Show js erb 当用户单击其文件夹之一时触发 如下所示 body append 它成功注
  • 需要根据用户选择有条件地渲染具有 X 行数的部分

    我有一个反应组件 其中包含一个下拉列表 其中的选项包括none 1 5 and 13 根据用户选择的数字 我需要渲染一个部分 其中包括许多行 每个行都有字段名称和下拉列表 如果用户不选择任何一个 我需要整个附加配置部分消失 新部分中的每个下
  • Skrollr 添加空白

    我已经尝试了一切 我在谷歌上阅读了 4 5 页试图找到适合我的修复程序 已经筋疲力尽了 即使我使用 skrollr 示例 我的问题仍然存在 不是说他们做错了什么 我知道我只是没有正确理解它 因此 我上传了一个演示 仅在移动设备上展示这个尴尬
  • 如何在 WebView 中添加 JavaScript 函数并稍后在提交 reCAPTCHA 时从 HTML 调用它

    我在 WebView 中添加一个 JavaScript 函数 如下所示 Kotlin val webView findViewById R id webview as WebView webView getSettings setJavaS
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http
  • 如何用时刻找到与给定时间最接近的时间?

    所以我有一个简单的代码 一个工作代码 它使用 moment 获取最接近给定时间的时间 Current time in millis const now moment 10 16 HH mm format x List of times co
  • 使用样式组件更改 SVG 描边的颜色

    我有一个 SVG 用作 img 标签 使用样式组件 我试图达到在悬停时更改描边颜色的程度 我导入了 SVG import BurgerOpenSvg from images burger open svg 我为它创建了一个样式组件 cons

随机推荐

  • 安装 Tensorflow 时出现问题——不是 CUDA/CuDNN 问题

    我最近开始使用 Tensorflow 但安装时遇到问题 每次我尝试导入它时都会收到以下错误 gt gt gt import tensorflow as tf Traceback most recent call last File C Us
  • 如何使用 numpy/scipy 处理丢失的数据?

    我在数据清理中最常处理的事情之一就是缺失值 R 使用其 NA 缺失数据标签很好地处理了这个问题 在Python中 看来我必须处理屏蔽数组 这似乎是设置的一个主要难题 而且似乎没有很好的文档记录 关于用 Python 简化这个过程有什么建议吗
  • 在asp.net服务器端代码中?

    我有这个代码 string s royi string val 5 我也有一个label
  • HTML/CSS 嵌套菜单下拉菜单

    我不明白如何为导航栏菜单创建嵌套下拉菜单 我想使用按钮和 div 而不是列表 链接 引导程序 我在这里构建了一些我认为正确的东西 但当然我无法让它工作 有人可以帮我让下拉菜单和嵌套下拉菜单正常工作吗 dropdown background
  • 使用 .NET 4.6.2 中的 HttpClientFactory

    我有一个 NET 4 6 2 控制台应用程序 使用简单注入器 我需要调用 HTTP 服务 直接使用 HttpClient 遇到问题后 我尝试使用 HttpClientFactory https github com aspnet HttpC
  • 链接器如何解析 C 中多重定义的全局符号

    我的教科书上是这么说的 函数和初始化的全局变量获得强符号 未初始化的全局变量获得弱符号 给定一个强符号和多个弱符号 选择强符号 所以我创建了两个文件来查看 file1 c int number int main int argc char
  • 与具有 10M 记录的 MySQL 相比,MongoDB 非常慢

    我有一个负载相当高的项目 在 MySQL 上运行 有大约 10M 条记录 每秒大约有 500 个请求 数据相当独特 缓存命中率只有3 左右 每行大约有 10 个字段 其中 2 个已建立索引 我的查询 99 使用这两个索引字段来请求 我决定尝
  • R 中的函数将小数转换为具有指定分母的分数

    假设我有一个小数列表 x lt c 0 55 0 246 0 767 然后我希望将这些转换成 10 以内的分数 这样我就得到 6 10 2 10 8 10 我遇到过这个 效果非常好 但是 我想知道是否有一个函数可以做到这一点 frac fu
  • 无需网络连接的桌面应用程序防止盗版?

    假设对于一个在其生命周期内永远不会接收互联网连接的应用程序 如何防止该软件的盗版 安装过程中不能有单一的产品密钥要求 因为一旦合法安装 任何人都可以复制安装并重新分发它 因此 每次应用程序运行时 它都应该检查某些内容 如果检查失败 则崩溃
  • 具有一个固定列宽的 Flexbox [重复]

    这个问题在这里已经有答案了 我正在努力实现flexbox有两列 左侧具有固定宽度 右侧随着页面大小的变化而缩放 例如 div class flex container div class flex col left div div
  • 即使特定日期没有数据,mysql日期列表也包含计数[重复]

    这个问题在这里已经有答案了 可能的重复 MySQL如何填充范围内缺失的日期 https stackoverflow com questions 3538858 mysql how to fill missing dates in range
  • 无需浏览器的 Selen 测试

    我使用 Selenium RC 进行测试 现在要执行负载测试 我想运行并行测试用例 有没有什么方法可以在不打开浏览器的情况下运行它们 Chrome 现在有无头模式 op webdriver ChromeOptions op add argu
  • Array.prototype.concat() 底层

    如何查看函数 concat 中的代码 它是如何做它所做的事情的 有人有代码的副本或在浏览器控制台中查看它的方法吗 console dir 不允许我访问过去 console dir Array prototype concat functio
  • 让 golang Gorilla CORS 处理程序工作

    我在这里有相当简单的设置 如下面的代码所述 但我无法得到CORS上班 我不断收到此错误 XMLHttpRequest 无法加载http localhost 3000 signup http localhost 3000 signup 响应
  • 无法以非 root 用户身份在 DockerFile 中解压缩 zip 文件

    当我尝试在 DockerFile 中解压 zip 文件时 不断收到以下错误 checkdir error cannot create my archive Permission denied unable to process my arc
  • Spring Data 似乎不理解@Column 名称

    我正在使用 Spring boot 1 4 1 RELEASE 以及 Spring Data 和 Hibernate 将一些数据保存到 MySQL 数据库中 我有这堂课Respondent 注释为 Entity以及注释如下的字段之一 Col
  • 如何在Python中使用win32gui关闭带句柄的窗口

    我已经通过 Python 中的 win32gui 库获得了我想要定位的窗口的句柄 我如何关闭窗口 我有以下代码 第二行做了我想做的事情 但最后一行似乎是错误的 handle win32gui FindWindow None r Notepa
  • 在android中制作一个RTL导航抽屉

    我想让我的导航从以下位置打开right to left 但是 一旦我更改这些步骤中的任何一个 我的程序就会在运行应用程序后单击导航后面临错误强制关闭 我的 main activity xml
  • 如何从任务管理器进程列表中的进程列表中区分不同的JavaWS应用程序?

    我正在使用 JavaWS 启动应用程序 然后如何检查该应用程序是否在用户计算机中运行 因为它在任务管理器进程列表中的名称不是我在 JNLP 文件中给出的名称 NOTE 我检查了任务管理器进程列表 但该进程的名称是 javaw exe 并且所
  • 将子元素添加到 React 元素

    如何向 React 组件添加子组件 this props children似乎是只读的 所以不能直接改变它 假设我有 var myComponent