2
votes

Javascript: définition de la valeur de l'objet par id, où id est la dernière lettre de l'objet

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'}
      }


1 commentaires

this.setState ({['colorObj' + id]: color})


3 Réponses :



0
votes

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));


0 commentaires

2
votes

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 $ {}.


1 commentaires

donc le nom du concept est une variable dynamique: D