Pour un tableau initial, il est préférable d'utiliser un objet plutôt qu'un tableau, car vous n'aurez alors plus à vous soucier des index et vous saurez beaucoup plus clairement ce qui est quoi :
const initialArr = [{
color: "blue",
text: "text1"
}, {
color: "red",
text: "text2"
}];
Pour le mappage réel, utilisez JS Array map au lieu de for loop - for loop devrait être utilisé dans les cas où il n'y a pas de tableau défini, comme afficher quelque chose un certain nombre de fois :
onPress = () => {
...
};
renderButtons() {
return initialArr.map((item) => {
return (
<Button
style={{ borderColor: item.color }}
onPress={this.onPress}
>
{item.text}
</Button>
);
});
}
...
render() {
return (
<View style={...}>
{
this.renderButtons()
}
</View>
)
}
J'ai déplacé le mappage dans une fonction séparée en dehors de la méthode de rendu pour un code plus lisible. Il y a beaucoup d'autres façons de boucler une liste d'éléments dans react native, et la façon que vous utiliserez dépendra de ce que vous avez besoin de faire. La plupart de ces méthodes sont couvertes dans cet article sur les boucles React JSX Bien qu'il utilise des exemples de React, tout ce qu'il contient peut être utilisé dans React Native. N'hésitez pas à y jeter un coup d'œil si vous êtes intéressé par ce sujet !
Par ailleurs, en dehors du sujet de la boucle, comme vous utilisez déjà la syntaxe du tableau pour définir la fonction onPress, il n'est pas nécessaire de la lier à nouveau. Encore une fois, cela ne s'applique que si la fonction est définie à l'aide de cette syntaxe dans le composant, car la syntaxe de la flèche lie automatiquement la fonction.
0 votes
Pourquoi ne pas utiliser map à la place ?
const buttons = buttonsListArr.map( item => <Button style={{borderColor:item[0]}} onPress={this.onPress.bind(this)}>{item[1]}</Button>
render() { return ( <View style={...}> <buttons /> </View> )};