100 votes

affectation ou appel de fonction attendu : expressions inutilisées ReactJS

class Game extends Component 
{
  constructor() 
  {
    super()
    this.state = {
      speed: 0
    }
    //firebaseInit()
  }
  render()
  {
    return 
    (
      <div>
        <h1>The Score is {this.state.speed};</h1>
      </div>
    )
  }
}

export default Game;

Je suis nouveau dans React et pour ce code il donne cette erreur

Expected an assignment or function call and instead saw an expression  no-unused-expressions

Je ne comprends pas où je me trompe, aidez-moi s'il vous plaît.

1 votes

Le message d'erreur est normalement accompagné de l'endroit où il se plaint, par exemple, quel fichier, quelle ligne.

0 votes

@zcui93 il y a une erreur dans ce fichier et dans la ligne de retour, pouvez-vous m'aider ?

0 votes

Quelle ligne ? Veuillez fournir des détails

2voto

Namik Hajiyev Points 11

Dans mon cas, l'erreur s'est produite parce que la nouvelle ligne après l'élément return déclaration.

Erreur : Je m'attendais à une affectation ou à un appel de fonction et j'ai vu une expression à la place.

return
(
    <ul>
        {
            props.numbers.map(number => <li key={number.toString()}>number</li>)
        }
    </ul>
);

Fonctionnement correct. Pas d'erreur

return (
    <ul>
        {
            props.numbers.map(number => <li key={number.toString()}>number</li>)
        }
    </ul>
);

2voto

Shravan Ramamurthy Points 1068

J'ai rencontré la même erreur, avec le code ci-dessous.

    return this.state.employees.map((employee) => {
      <option value={employee.id}>
        {employee.name}
      </option>
    });

Le problème ci-dessus a été résolu lorsque j'ai remplacé les accolades par des parenthèses, comme indiqué dans l'extrait de code modifié ci-dessous.

      return this.state.employees.map((employee) => (
          <option value={employee.id}>
            {employee.name}
          </option>
        ));

2voto

shaheb Points 402

Dans mon cas, cela est dû aux accolades de la fonction. Si vous utilisez jsx, vous devez remplacer les accolades par des parenthèses, voir le code ci-dessous.

const [countries] = useState(["USA", "UK", "BD"])

J'ai essayé mais ça ne marche pas, je ne sais pas pourquoi.

 {countries.map((country) => {
        <MenuItem value={country}>{country}</MenuItem>
  })}

Mais quand je remplace les accolades par des parenthèses, ça marche bien pour moi.

  {countries.map((country) => ( //Changes is here instead of {
        <MenuItem value={country}>{country}</MenuItem>
  ))} //and here instead of }

J'espère que cela vous aidera aussi...

2voto

tabaluga Points 1

Dans mon cas, j'ai utilisé des virgules au lieu de points-virgules dans le constructeur.

Exemple avec des erreurs :

class foo(bar1, bar2, bar3){
    this.bar1=bar1,
    this.bar2=bar2,
    this.bar3=bar3,

}

J'aurais dû utiliser des points-virgules comme ci-dessous :

class foo(bar1, bar2, bar3){
    this.bar1=bar1;
    this.bar2=bar2;
    this.bar3=bar3;
}

2voto

BKSpurgeon Points 11129

Move the start of the bracket

C'est une question délicate. Lorsque vous utilisez le mot-clé return, assurez-vous que le DÉBUT de la parenthèse se trouve SUR LA MÊME LIGNE que le mot-clé return mot-clé. Si vous faites cela, tout devrait fonctionner correctement. Si vous ne le faites pas, vous obtiendrez le bogue ci-dessus.

J'ai ajouté un diagramme pour (j'espère) rendre les choses super claires pour tout le monde, et pour éviter à certains d'entre vous d'avoir à se procurer un nouveau moniteur. J'espère que c'est clair comme de l'eau de roche, et si ce n'est pas le cas, postez un commentaire et j'essaierai de le modifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X