2017-05-10 1 views
-1

Je ne comprends pas comment démêler la double flèche. Mon linter n'aime pas cette magie ES7 +.Comment est-ce que je pourrais réécrire ceci sans employer des fonctions de flèche?

export default class Login extends Component { 
    handleChange = (fieldName) => (evt) => { 
     this.setState({ 
      [fieldName]: evt.target.value, 
      errors: {...this.state.errors, [fieldName]: null} 
     }) 
     } 
    } 
+0

Vous devez réparer votre linter alors - quel est le message d'avertissement? Btw, les fonctions de flèche sont ES6, seul l'objet propagation est au-delà de ES7. – Bergi

+0

Je voudrais comprendre comment démêler ceci indépendamment de mon linter. Je sais que les flèches sont ES6 mais initialiser une méthode sans la lier à l'intérieur d'une classe de réaction est très certainement une magie ES7 +. L'avertissement est 'Jeton inattendu = (null)'. J'utilise standardjs. –

+0

Cela ressemble aussi probablement au corps d'une propriété de classe. La méthode ES6 serait de l'avoir à l'intérieur de votre constructeur, ou d'en faire une méthode et de la lier séparément. – loganfsmyth

Répondre

2

Il n'y a rien de mal avec les fonctions de direction, Unexpected token = signifie que votre linter n'aime pas class fields. Il suffit de déplacer le tout à l'intérieur du constructeur:

export default class Login extends Component { 
    constructor() { 
    super(); 
    this.handleChange = (fieldName) => (evt) => { 
     this.setState({ 
     [fieldName]: evt.target.value, 
     errors: {...this.state.errors, [fieldName]: null} 
     }); 
    }; 
    } 
} 
+0

Cela a du sens. Merci beaucoup. –