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

175voto

Andrey Medvedev Points 1681

Cela se produit parce que vous mettez entre parenthèses des return sur la ligne suivante. Cela peut être une erreur courante si vous écrivez des js sans point-virgule et que vous utilisez un style où vous mettez des accolades ouvertes sur la ligne suivante.

L'interpréteur pense que vous retournez undefined et ne vérifie pas votre ligne suivante. C'est le return truc d'opérateur.

Mettez votre parenthèse ouverte sur la même ligne que le bouton return .

1 votes

L'analyseur JavaScript ajoutera automatiquement un point-virgule lorsque, pendant l'analyse du code source, il trouvera ces situations particulières : 1. lorsque la ligne suivante commence avec du code qui casse la ligne actuelle (le code peut frayer sur plusieurs lignes). 2. lorsque la ligne suivante commence par un }, fermant le bloc actuel 3. lorsque la fin du fichier de code source est atteinte 4. lorsqu'il y a une instruction return sur sa propre ligne 5. lorsqu'il y a une instruction break sur sa propre ligne 6. lorsqu'il y a une instruction throw sur sa propre ligne 7. lorsqu'il y a une instruction continue sur sa propre ligne.

106voto

Gus Points 6237

Dans mon cas, j'avais des accolades là où il aurait fallu des parenthèses.

const Button = () => {
    <button>Hello world</button>
}

Là où il aurait dû être :

const Button = () => (
    <button>Hello world</button>
)

La raison en est, comme expliqué dans les docs MDN est qu'une fonction flèche enveloppée par () retournera la valeur qu'il enveloppe, donc si je voulais utiliser des accolades, je devais ajouter l'élément return mot-clé, comme ça :

const Button = () => {
    return <button>Hello world</button>
}

41voto

Ritesh Jung Thapa Points 300

Pour moi, l'erreur s'est produite lors de l'utilisation de map. Et je n'ai pas utilisé le return Statement à l'intérieur de la carte.

{cart.map((cart_products,index) => {
    <span>{cart_products.id}</span>; 
})};

Le code ci-dessus a produit une erreur.

{cart.map((cart_products,index) => {
    return (<span>{cart_products.id}</span>); 
})};

Le simple fait d'ajouter le retour a résolu le problème.

0 votes

La même chose m'est arrivée, ça n'a marché qu'après avoir ajouté le retour. Mais c'est câblé !

1 votes

C'est parce que map prend une fonction. (cart_products,index) => { return (<span>{cart_products.id}</span>) ; } est en fait une déclaration de fonction. Ainsi, lorsque nous retournons la valeur retournée sera utilisée.

0 votes

Mais ce qui m'a fait réfléchir c'est que le code du tuto fonctionne bien sans le retour ! !!

14voto

Yazan Najjar Points 531

Si vous utilisez JSX dans une fonction avec des accolades, vous devez les remplacer par des parenthèses.

Code erroné

return this.props.todos.map((todo) => {
            <h3> {todo.author} </h3>;
        });

Code correct

//Change Curly Brace To Paranthesis   change {} to => ()
return this.props.todos.map((todo) => (
            <h3> {todo.author} </h3>;
        ));

0 votes

C'est une bonne pratique si nous passons un deuxième paramètre, c'est-à-dire l'index, à la fonction map.

4voto

Dans mon cas, je n'ai jamais mis retourner à l'intérieur d'une fonction flèche Mon code est donc le suivant

`<ProductConsumer>
   {(myvariable)=>{
      return  <h1>{myvariable}</h1>
   }}
</ProductConsumer> `

0 votes

Mais lorsque je mets un retour dans une fonction flèche, cela fonctionne bien. Comment ?

0 votes

Si nous mettons des crochets dans une fonction flèche, nous avons toujours besoin de retourner.

0 votes

Oui c'est une fonction donc elle doit retourner une valeur

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