En ce qui concerne le titre: cela semble un peu déroutant mais ce n'est pas le cas.
Dans React, je fais de la réutilisation du code
J'ai
getSelectedColor=(color,id) => {
this.setState({colorObj{`id`}: color}) //WRONG CODE
}
Je veux cette fonction -> Par Id d'objet, je veux définir la couleur d'un objet particulier.
id valeur -> 1,2,3,4,5
state={
colorObj1: {r:'0',g:'0',b:'0',a:'1'},
colorObj2: {r:'0',g:'0',b:'0',a:'0'},
colorObj3: {r:'0',g:'0',b:'0',a:'1'},
colorObj4: {r:'0',g:'0',b:'0',a:'0'},
colorObj5: {r:'0',g:'0',b:'0',a:'1'}
}
3 Réponses :
Vous devez utiliser Noms de propriétés calculés comme suit: this.setState({[`colorObj${id}`]: color})
try
class MyClass {
constructor() {
this.state={
colorObj1: {r:'0',g:'0',b:'0',a:'1'},
colorObj2: {r:'0',g:'0',b:'0',a:'0'},
colorObj3: {r:'0',g:'0',b:'0',a:'1'},
colorObj4: {r:'0',g:'0',b:'0',a:'0'},
colorObj5: {r:'0',g:'0',b:'0',a:'1'}
}
}
setSelectedColor(color,id) {
this.state['colorObj'+id]=color;
}
getSelectedColor(id) {
return this.state['colorObj'+id];
}
}
// TEST
let c = new MyClass();
c.setSelectedColor({r:'1',g:'1',b:'1',a:'1'},6)
console.log(c.getSelectedColor(6));
console.log(c.getSelectedColor(2));
Ce n'est pas un problème de réaction. Vous souhaitez connecter une chaîne avec une variable dynamique. Vous pouvez utiliser: 'someBasicStr' + dynamicVar ou avec la chaîne de modèle (es6 +): someBasicStr $ {dynamicVar} , toute variable sera à l'intérieur de $ {}.
donc le nom du concept est une variable dynamique: D
this.setState ({['colorObj' + id]: color})