我已经在for循环中创建了一些组件,并将它们推到数组中。 我可以从此数组中获取任何组件以更改其道具-类似于标题吗?
fields = [];
for (let i = 0; i < assets.fieldNames[assets.systemLang].length; i++) {
fields.push(
<InfoField
handlePress={() => this.fieldPressed(i)}
key={i}
title={assets.fieldNames[assets.systemLang][i]}
value="" />
);
};
.....
<View style={styles.infoFields}>
{
fields
}
</View>
我有一个需要这样的功能
changeComponentTitle = () => {
fields[indexForComponent].props.title = "new Title"
}
答案 0 :(得分:0)
您需要确保在进行更新后以某种方式触发重新渲染(也许通过将fields
放入状态变量并按注释中所述调用setState
),但您可以使用cloneElement
来更新现有元素的单个道具:https://reactjs.org/docs/react-api.html#cloneelement
changeComponentTitle = () => {
fields[indexForComponent] = React.cloneElement(fields[indexForComponent], {title: "new Title"});
}