如何从数组中获取组件并在react native中更改其属性?

时间:2019-09-19 02:34:36

标签: react-native

我已经在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"

}

1 个答案:

答案 0 :(得分:0)

您需要确保在进行更新后以某种方式触发重新渲染(也许通过将fields放入状态变量并按注释中所述调用setState ),但您可以使用cloneElement来更新现有元素的单个道具:https://reactjs.org/docs/react-api.html#cloneelement

changeComponentTitle = () => {

     fields[indexForComponent] = React.cloneElement(fields[indexForComponent], {title: "new Title"});

}