React:将组件存储在对象中

2024-07-04

我的用户配置文件中有几十个字段,我正在尝试构建一种有效的方法来在适当的输入表单组件中显示它们。

例如,配置文件可能如下所示:

profile1={
  name: 'Cornelius Talmadge',
  phone: '1'
}

如果我可以像这样堆叠组件......

export const FieldCatalogue = {
  name: <TextField defaultValue={this.state.userProfile.name} label={"Name"} />
}

...然后我可以做这样的事情:

for (let field in Object.keys(profile1)) {
  return FieldCatalogue[field]
}

这将是非常酷的。

这个问题 https://stackoverflow.com/questions/30762734/multiple-react-components-in-a-single-module如果我的输入组件都是通过正常语法构造的(例如,Component = React.createClass({..})), but:

A。有很多样板文件

b.我必须向每个人传递大量道具,这不是最佳选择

对我来说,完美的情况基本上是将输入组件几乎作为字符串传递,这样它们就会落入它们渲染的任何父组件的范围(状态、道具等)中。

这可能和/或可取吗?


对我来说,完美的情况基本上是传递输入 组件几乎作为字符串,这样它们就落入了范围 它们渲染的任何父组件的(状态、道具等)。

这可能和/或可取吗?

是的,这实际上是可能的!不,我不认为这是我真正会使用的东西。但它确实有效,而且看起来很酷。在我的示例中,FieldCatalogue 组件显然没有自己单独的this.state对象,但通过将它们绑定到父组件this他们自动继承正确的上下文。

请注意,如果组件被定义为箭头函数,则该示例将不起作用,因为箭头函数永远不会有自己的this对象。

哦,还有钥匙<Tmp key={i} />之所以存在,是因为当我们循环遍历数组时,我们需要为 React 提供某种标识符。

我必须尝试将此作为练习,这非常简洁:

https://jsfiddle.net/dannyjolie/e9s09xrm/ https://jsfiddle.net/dannyjolie/e9s09xrm/

const FieldCatalogue = {
  name: function() {
    return <input defaultValue = {this.state.userProfile.name} label = {"Name"}/>;
  },
  age: function() {
    return <input defaultValue = {this.state.userProfile.age}/>;
  }
}
const App = React.createClass({
  getInitialState: function() {
    return {
      userProfile: {
        name: 'Name in parent state',
        age: 'Age in parent state'
      }
    };
  },
  render: function() {
    let content = Object.keys(FieldCatalogue).map((objkey, i) => {
      let Tmp = FieldCatalogue[objkey].bind(this)
      return <Tmp key = {i} />;
    });
    return <div>{content}</div>);
  }
});

这样一来this父组件的上下文被传递给 FieldCatalogue 组件,它就可以正常工作了。虽然真的不确定这是否是一件好事。

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

React:将组件存储在对象中 的相关文章

随机推荐

  • 如何在R闪亮中使用plotly

    我正在尝试为使用闪亮生成的输出添加图表 我收到图形生成错误 有人可以看一下并提供帮助吗 条形图参数是根据计算生成的基于计算的输出 server output graph lt renderPlotly plotly x c as numer
  • 强制 headless chromium/chrome 使用实际的 GPU 而不是 Google SwiftShader

    我正在尝试使用无头铬 使用 puppeteer 将 html 打印为 pdf一切工作正常 除非 html 包含大的 png 图像 超过 10 000x10 000px 渲染页面的整个过程需要非常长的时间 最多半小时 但如果使用非无头模式 只
  • 获取格式错误的访问令牌“t ​ype”:“OAuthException”,“code”:190

    我正在编写一个 Android 应用程序来获取 Facebook 用户相册和照片并显示在我的 Android 应用程序中 我创建了一个Facebook 应用程序 APP ID 281846961912565 在创建 Facebook 实例时
  • 将证据权重 (WoE) 替换为相应的值

    我有一个名为x其最小值为零 最大值为 200 万 所以我将值切成像这样的代码 bins 0 1 10000 20000 50000 60000 70000 100000 2000000 df input X bins pd cut df i
  • Python:带约束的多元非线性求解器

    给定一个函数f x 需要一个输入向量x并返回相同长度的向量 如何找到函数设置约束的根x 例如 每个组件的范围x 令我惊讶的是 我找不到很多关于此的有用信息 在 scipy 列表中优化和求根算法 https docs scipy org do
  • 检查字符串是否可能是名称的缩写

    我正在尝试开发一个 python 算法来检查一个字符串是否可以是另一个单词的缩写 例如 fck是一个匹配项fc kopenhavn因为它匹配单词的第一个字符 fhk不会匹配 fco不应该匹配fc kopenhavn因为没有人会把 FC Ko
  • 组合点击和触摸启动事件不起作用

    我有一个网站 我正在尝试使其在移动设备上也能正常运行 但是 当我分别组合 PC 和平板电脑的单击和 touchstart 事件时 两者都不起作用 单击事件附加到的元素不会触发 谁能解释我应该如何解决这个问题 这是一个元素不起作用的示例 笔具
  • 以编程方式为存储库启用 Github Pages

    有没有办法通过api启用Github页面 不请求页面构建 我的意思是最初启用该功能并指向分支 您只需将内容推送到远程 git 存储库即可 你必须区分用户页面 用户名 github io 和项目页面 用户名 github io 项目名 用户页
  • 如何用手指在WP7中绘制形状?

    如何用手指在WP7中绘制形状 我正在尝试实现一个简单的绘画应用程序 但我不确定如何进行绘图 有两个示例供您使用 您可以从以下链接下载 示例项目1 http windowsphonegeek com tips drawing in wp7 2
  • 准备 iPhone 的调试器支持

    我无法在 iPhone 上安装该应用程序 我被这条消息困住了 准备 iPhone 的调试器支持 在这里尝试了所有答案 https stackoverflow com questions 46316373 xcode9 iphone is b
  • 连接到主机 localhost 端口 22:连接被拒绝

    在我的本地计算机上安装 hadoop 时 出现以下错误 ssh vvv localhost OpenSSH 5 5p1 OpenSSL 1 0 0e fips 6 Sep 2011 debug1 Reading configuration
  • 如何清除分享链接缓存?

    例如 我尝试分享一个链接http apps facebook com appname http apps facebook com appname 在我的个人资料页面上的 更新状态 下 我修改了应用程序的内容后 它仍然显示缓存 我尝试使用h
  • ((指针)(P)+1)^什么时候可以起作用?

    我正在研究delphiXE2 我正在研究PInteger 如果我在我的delphi代码中这样做 var P PInteger testInt Integer Scores array 0 4 of Integer 33 44 56 78 7
  • 使用 SSE2 优化 RGB565 到 RGB888 的转换

    我正在尝试使用 SSE2 和基本公式来优化从 565 到 888 的像素深度转换 col8 col5 lt lt 3 col5 gt gt 2 col8 col6 lt lt 2 col6 gt gt 4 我采用两个 2x565 128 位
  • 实现 gensim.LdaMallet 时出错

    我按照此链接上的说明进行操作 http radimrehurek com 2014 03 tutorial on mallet in python http radimrehurek com 2014 03 tutorial on mall
  • OpenCV 中二值图像的 width 和 widthStep 不同

    我使用 cvLoadImage 在 OpenCV 中加载二进制图像 如下所示 IplImage myImg cvLoadImage
  • Windows 上的 Xvfb

    我正在使用 pyvirtualdisplay 使用无头 Firefox 浏览器运行测试 这是我正在使用的代码 from selenium import webdriver from selenium webdriver support ui
  • VB6 的线程模型是什么?

    我正在将一个古老的 VB6 程序移植到 C Net 我不太了解VB6 我问这个是为了更好地理解它 旧的VB6程序有一个程序执行的主过程 但是它also有许多用于套接字事件或计时器事件的事件处理程序 以及这些经常操纵的共享资源 例如 公共全局
  • 如何在CSS中搜索某些内容时隐藏搜索图标

    我想隐藏search当用户搜索某些内容时的图标 连我都想躲起来 保留图标和清除图标x就这样 问题如下图所示 NOTE 我想保持相同的差距search icon and Search text input type search width
  • React:将组件存储在对象中

    我的用户配置文件中有几十个字段 我正在尝试构建一种有效的方法来在适当的输入表单组件中显示它们 例如 配置文件可能如下所示 profile1 name Cornelius Talmadge phone 1 如果我可以像这样堆叠组件 expor