当前位置: 首页 > 知识库问答 >
问题:

多次调用React组件

颛孙成益
2023-03-14

我正在尝试使用React在DOM中加载各种图像。我的想法是将数据库中的所有图像加载到同一个div中,因此我尝试使用for循环调用react组件,该组件为图像标记呈现标记,但是,当循环结束时,DOM中显示的唯一图像是最后一个图像。有没有一种方法可以使用React来实现这一点?

这是我的组件:

class CargarImagen extends React.Component {
  constructor(props) {
    super(props);
    this.state = '';
  }
  render() {
    return (
      <div className="col-sm-3">
        <img
          src={this.props.ruta}></img>
        <a href="#">{this.props.name}</a>
      </div>
    );
  }
}

这里是调用那个组件的函数(函数retornoDB它只是一个AJAX)

function clickListado() {
  retornoDB(function (data) {
    let json = JSON.parse(data);
    const domContainer = document.querySelector('#en_proceso');
    for (var key in json) {
      if (json.hasOwnProperty(key)) {
        ReactDOM.render(<CargarImagen ruta={json[key].ruta} name={json[key].nombre} />, domContainer);
      }
    }
  });
}

任何提示都将不胜感激。谢谢

共有2个答案

沈翰
2023-03-14

反应状态。渲染可以处理组件数组。

function clickListado() {
    retornoDB(function (data) {
        let json = JSON.parse(data);
        const domContainer = document.querySelector('#en_proceso');

        let Images = json.map((img, index) => <CargarImagen ruta={img.ruta} name={img.nombre} key={index}/>);

        ReactDOM.render(Images, domContainer);

    });
}
南宫凡
2023-03-14

渲染通常只是用于将应用的根注入到静态div中。你得到最后一个,仅仅是因为你一直用每个CargarImagen组件替换那个div。相反,构建一个数组并将其返回给调用(父)组件的JSX。您可以将myArray置于组件的内部状态,或者只使用一个普通对象并返回该对象。很难说你在这里是如何实现的。

for (var key in json) {
  if (json.hasOwnProperty(key)) {
    myArray.push(<CargarImagen ruta={json[key].ruta} name={json[key].nombre} />);
  }
}
 类似资料:
  • 我正在尝试在像这样: 然后在我的它呈现: 我正在将我的fetch记录到控制台中,它被调用了三次。流程是我在登录页面上(加载时挂载一次),我登录,它将我重定向到自己呈现的主页。此时,我在控制台中看到:

  • 问题内容: 我正在构建一个PhotoViewer,当用户向左或向右按​​下时可以更改照片。我正在使用React,Redux,react-router和react- router- redux。当用户按下向左或向右按钮时,我会做两件事,我使用来更新网址,并调度一个操作来更新当前查看的照片。我正在订阅状态更改以进行调试。 以上每一行都会触发新的状态更改。因为我更新了,所以分派操作会更新存储,而更新UR

  • 我正在构建一个PhotoViewer,当用户按左键或右键时,它可以更改照片。我正在使用React、Redux、React router和React router Redux。当用户按下左键或右键时,我会做两件事,使用并发送一个操作来更新当前查看的照片,。我订阅状态更改以进行调试。 上面的每一行都会触发一个新的状态更改。因为我更新了,所以发送操作会更新存储,而更新url会更新存储,因为react r

  • 我试图建立一个连接4的游戏,它有一个由7列组件组成的板组件,所有包含6个空间组件。每个列的上方都有一个拖放按钮,该按钮将用于将该件拖放到列中。为了在“红色”和“黑色”玩家之间交替,我创建了一个状态“redorblue”,它返回一个布尔值。 简而言之,当单击Drop按钮时,我希望切换“redorblue”的值,以跟踪轮到谁了。我已经将onClick函数设置为setState({redorblue:!

  • 我在useEffect钩子中调用一个GetAPI,以在组件装载之前获取数据,但是它多次调用API,并且我得到一个错误“多次API调用”。 输出: 请让我知道这是在组件使用useEffect钩子呈现之前从API获取数据的最佳方法。

  • 我的主要活动是装载不同的碎片。此外,可以从MainActivity打开设置-activity。 如果用户只是在片段之间切换,那就万事大吉了。 当打开设置-activity并返回MainActivity时,onResume和onPause会被调用两次。如果用户打开设置-activity并再次返回MainActivity,onResume和onPause将被调用三次。每次用户打开“设置-activit

  • 我试图为BillingClient v.2.2.0和Kotlin协同程序编写一个包装: 正如您所见,当我试图查询购买或购买时,我确保客户已经准备好。但在生产中存在许多错误: 我试图了解问题的原因,得到了if将被多次调用。可能存在异常。我一直想知道这是怎么可能的,因为我每次调用都会创建新的侦听器?我无法在emulator或测试设备上重现此问题。有人能解释一下这里发生了什么,以及如何解决吗?

  • 问题内容: 我想检查一下当您多次使用this.setState时发生了什么(为了讨论而两次)。我认为该组件将被渲染两次,但显然它仅被渲染一次。我的另一个期望是,对setState的第二个调用可能会在第一个调用之上运行,但是您猜到了- 运行良好。 链接到JSfiddle 如您所见,每个渲染器上都会弹出一个警告,提示“渲染器”。 您是否对其正常工作有解释? 问题答案: React批处理状态更新发生在事