Javascript 反应:动态创建子组件并避免重新渲染子组件

Javascript 反应:动态创建子组件并避免重新渲染子组件,javascript,reactjs,asynchronous,dynamic,Javascript,Reactjs,Asynchronous,Dynamic,我是新来的。所以这可能是一个非常基本的问题。但我不知道如何解决它 场景: 我有一个父TileLayout.jsx控件。此控件将呈现子平铺控件。 传递到此TileLayout.jsx的道具是一个名为TileSetData的对象。此TileMetadata只是一个对象,它是一个tile列表,以及标题和获取tile数据的webservice url: tilesMetaData : { key : "some unique key", tileMetaData : { title : "s

我是新来的。所以这可能是一个非常基本的问题。但我不知道如何解决它

场景: 我有一个父TileLayout.jsx控件。此控件将呈现子平铺控件。 传递到此TileLayout.jsx的道具是一个名为TileSetData的对象。此TileMetadata只是一个对象,它是一个tile列表,以及标题和获取tile数据的webservice url:

tilesMetaData : {
   key : "some unique key",
   tileMetaData : { title : "string" , webserviceURL : "string"},
   tileData : { some data }
}
在componentWillMount()方法中,我通过在tileMetaData对象上循环并获取webservice url来检索各个tile的数据。一旦检索到数据,我将再次使用tileData填充TileMetaData对象

因此,最初只渲染标题为空的平铺。数据返回后,将使用数据加载磁贴

在TileLayout.jsx的render方法中

render() {
    const { tilesMetaData } = this.props

    return (
      <div className="tileContainer">
        {
          tilesMetaData.size !== 0
          ?
            Object.keys(tilesMetaData).map((key, index) => (
              <Tile
                tileId={key}
                tileMetaData={tilesMetaData[key].tileMetaData} 
                tileData={tilesMetaData[key].tileData ? tilesMetaData[key].tileData : null}

              />
            ))
          :
            null
          }
      </div>
    )
  }
render(){
const{tilesMetaData}=this.props
返回(
{
tilesMetaData.size!==0
?
Object.keys(tileSetData).map((键,索引)=>(
))
:
无效的
}
)
}
问题 每次使用实际的tileData加载TileMetadata时,整个TileLayout控件都会重新加载。我不希望它被重新渲染。我只希望检索其数据的相应平铺控件重新呈现

我试过几次,但似乎都不管用。非常感谢您的帮助

谢谢,
YN

向我们展示您的尝试?您好,我尝试通过React.createElement方法创建平铺控件。这样我就有了所有创建的平铺控件的引用。然后,当tileData可用时,我可以重新渲染所需的平铺控件。但是我不能这样做,因为createElement中的第三个参数必须是子控件。我也尝试了componentWillUpdate方法来阻止更新。不知何故,这似乎没有得到呼吁。任何帮助或暗示都是非常感谢的。