在渲染的组件中包含组件挂载点内容

2024-04-26

我有一个应用程序(内置于 Rails 中),它在后端呈现一些标记,然后我想使用 ReactJS 在前端通过附加功能来“增强”这些标记。

渲染内容看起来像这样:

<%= react_component :TestComponent do %>
    <div class="foo">
        Here's some content.
    </div>
<% end %>

此调用创建一个包装 div,其中包含一些内容data-然后,react_ujs 捕获以实例化 React 组件的属性。我没能做的是找到一种方法(不使用 jquery 做一些有点疯狂的技巧)来获取这个 mount 元素的内容(因此,带有类“foo”的内部 div 及其内容)在我的React 组件,这样我就可以将它包含在我的 JSX 中。

React.createClass({
    render: function() {
        return (
            <div className="my-component">
                { mount point contents here! }
            </div>
        );
    }
});

该行为在 AngularJS 术语中被描述为“嵌入”。

有什么想法可以用 ReactJS 来实现这种行为吗?我收到了一些关于this.props.children,但这似乎并没有产生我需要的结果,并且将会undefined即使这样, mount 元素也有内容。


React 不支持此功能。 React 在真正的 HTML 中不起作用;它在函数调用中起作用。尽管 JSX 看起来像 HTML,但它在由 React 运行之前会被编译为函数调用。这意味着 React 不知道如何处理真正的 HTML,就像您在示例中传递的那样。

JSX:

<div className="foo">
  Here's some content
</div>

尽管这看起来与您尝试注入的内容相似,但客户端最终会看到以下内容:

React:

React.DOM.div({className: "foo"},
  "Here's some content"
)

Your react_component助手应该接受 JSX(而不是 HTML)并通过 JSX 转换器运行它,然后再将其渲染到页面。然后您可以将结果传递给组件并将其引用为this.props.children.

这就是你的react_component应该为您的示例输出:

React.renderComponent(
  TestComponent(null,
    React.DOM.div({className: "foo"},
      "Here's some content"
    )
  ),
  referenceToDomNode // Not obvious where you pass this with your helper
);

和你的TestComponent可能看起来像这样:

var TestComponent = React.createClass({
  render: function() {
    return (
      <div className="my-component">
        {this.props.children}
      </div>
    );
  }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在渲染的组件中包含组件挂载点内容 的相关文章

  • Angular JS - 提交到 $http 时日期发生变化 - 时区问题

    我遇到一个奇怪的问题Date当它通过 http put 传递到 API 时发生变化 我怀疑时区问题 Datepicker 触发 ng change 事件 console log Tue Jun 10 2014 00 00 00 GMT 01
  • 如何使用 LeafLe 创建商店地图

    我希望创建一个可以交互的地图 我发现的最好的选择是传单 问题是我没有找到任何资源来解释如何创建自己的地图 我希望创建一个商场地图 用户可以在其中看到所有商店 喷泉 我怎样才能做到这一点 最好的起点是传单示例页面 http leafletjs
  • 页面其余部分完成加载后延迟加载 html5 视频

    我有一个视频元素用作我正在构建的页面底部部分的背景 我试图通过将 src 存储为 data src 属性并使用 jQuery 在其他资源加载后将其应用到 src 属性 因为它不是英雄图像或任何东西 我想加载海报以节省加载时间 然后稍后加载视
  • History.pushState和页面刷新

    我开始研究 HTML5 新历史 API 不过 我有一个问题 如何处理页面刷新 例如 用户单击一个链接 该链接由 js 函数处理 该函数 异步加载页面内容 使用history pushState 更改URL 用户刷新页面 但是服务器上当然不存
  • 使用 Jquery 更改 css 属性时的事件检测

    有没有办法检测元素的 显示 css 属性是否更改 是否更改为无 块或内联块 如果没有的话有什么插件吗 谢谢 Note 突变事件 https developer mozilla org en US docs Web Guide Events
  • React Query useInfiniteQuery 使单个项目无效

    使用 useInfiniteQuery 时如何使单个项目无效 这是一个演示我想要实现的目标的示例 假设我有一个成员列表 每个成员都有一个关注按钮 当我按下 关注 按钮时 会单独调用服务器来标记给定用户正在关注另一个用户 此后 我必须使整个无
  • 无法让 CloudKit 进行身份验证(使用 Javascript 和服务器到服务器密钥)

    我正在尝试使用苹果的cloudkit js文件以建立与 CloudKit 的服务器到服务器连接 然而 尽管配置混乱了几个小时 我似乎无法让 CloudKit 认为我的请求有效 我的配置逻辑非常简单 const privateKeyFile
  • 使用点符号将数字传递到函数中

    如果我有一个对象和函数 var obj 1234 example sample 5678 example sample function example num str if obj num hasOwnProperty str manip
  • 如何在javascript中删除一组表情符号中的最后一个表情符号?

    假设我的字符串中有 3 个表情符号 字符串中没有任何空格或除表情符号之外的任何其他字符 如何删除javascript中最后一个表情符号 下面的答案不使用任何特殊的包并安全地删除最后一个表情符号 function safeEmojiBacks
  • 启动 onclick 比使用 document.onload 更快

    我有带有链接的 html 页面 我想在其中附加一个功能onclick事件 一种方法当然是 a href save php Save a 但我知道这不是最佳做法 所以我反而等待window onload 循环遍历链接并将保存功能附加到链接re
  • 使用 Google 地图 API 进行反向地理编码

    我正在研究 JavaScript Google Map API 版本 3 更准确地说 正在研究反向地理定位 在 的帮助下官方文档 http code google com intl fr apis maps documentation ge
  • 主干集合排序

    我制作了我的第一个主干应用程序 但在集合排序方面遇到了一些问题 使用这个后 var SortedFriends MyFriends sortBy function friend return friend get uid console l
  • SyntaxError:无法在动态导入 Nextjs 的模块外部使用 import 语句

    我遵循了SunEditor的文档 它是这样的 import React from react import dynamic from next dynamic import suneditor dist css suneditor min
  • 如何制作实时jquery效果?

    我想制作一个实时提要阅读器 并且我想要一个解决方案 使新项目无需刷新页面即可出现 并且具有像friendfeed一样的滚动效果 你可以在这里看到我在说什么 http www vimeo com 4029954 http www vimeo
  • FB.getLoginStatus() 不起作用

    我正在尝试编写一段代码来检查用户是否登录 发现FBJS API中有一个内置方法 叫做getLoginStatus 我已经在html中实现了它 但出于某种原因 getLoginStatus 内部的alert 不会被触发 我也尝试在 init
  • Apollo 客户端“未找到命名导出‘删除’”

    我正在尝试创建一个apollo client插件Nuxt 3应用 它当前抛出有关名为的包的错误ts invariant file Users my name Repositories project node modules apollo
  • TinyMCE:将 CSS 类属性与 formatselect-dropdown 格式结合使用

    我想定制格式 http wiki moxiecode com index php TinyMCE Configuration theme advanced blockformats在 TinyMCE 中格式选择下拉菜单 http wiki
  • 如何在javascript中设置从数据库输入的最大数量?

    我希望根据数据库中的数量设置 输入类型 数字 中输入的最大数量 目前 我正在尝试让它在数据最大的基础上工作 然后再尝试从数据库中获取最大值 但它似乎无法工作 之前已经在这里问过 但我仍然无法理解 在 php javascript 中设置数据
  • React Native 运行保持在 IDLE 状态

    这是我第一次设置 React NativeUbuntu 18 04 LTS 我已经完成设置 并且尝试使用以下命令在设备上运行该应用程序react native run android命令 这是我在终端中得到的输出 ron lenovo re
  • 有没有用 Javascript 编写的开源 JSDoc 解析器?

    我正在寻找一个可以在我的项目中使用的 JSDoc 解析器 我正在寻找可以传递 JSDoc 注释并接收该注释含义的结构化描述的东西 我见过的大多数工具似乎都能够将 JSDoc 注释转换为 HTML 或其他格式 我正在寻找能够提供可用于输入其他

随机推荐