Javascript 反应:动态创建子组件并避免重新渲染子组件
我是新来的。所以这可能是一个非常基本的问题。但我不知道如何解决它 场景: 我有一个父TileLayout.jsx控件。此控件将呈现子平铺控件。 传递到此TileLayout.jsx的道具是一个名为TileSetData的对象。此TileMetadata只是一个对象,它是一个tile列表,以及标题和获取tile数据的webservice url: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
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方法来阻止更新。不知何故,这似乎没有得到呼吁。任何帮助或暗示都是非常感谢的。