2016-12-07 1 views
0

J'ai l'erreur: Impossible de lire la propriété 'setState' de undefined lors de l'utilisation de la composition et en cours d'exécution avec ramda.Impossible de lire la propriété 'setState' de undefined en utilisant ramda

Voici mon code:

const changeStateOf = _.curry((stateName, stateValue) => { 
    let obj = {} 
    obj[stateName] = stateValue 

    this.setState(obj) 
}) 

const inputValue = (event) => { 
    return event.target.value 
} 

const App = React.createClass({ 
    handleOnChange: _.compose(changeStateOf('input'), inputValue), 

    /* //This is working 
    handleOnChange: function(event) { 
    this.setState({input: event.target.value}) 
    },*/ 

    render: function() { 
    return <div> 
    <input onChange={this.handleOnChange} value={this.state.input} placeholder="Add something"/> 
    </div> 
    } 
}) 

Ce que j'ai essayé:

  1. Ajout .bind (ce) à handleOnChange
  2. passer cela comme argument changeStateOf

I sais que je manque quelque chose, mais je ne vois pas où est le problème exactement.

Merci

+0

Il semble que 'onChange = {this.handleOnChange.bind (this)}' devrait fonctionner. C'est ce que tu as essayé? –

+0

Avez-vous essayé 'changeStateOf ('input'). Bind (this)'? –

+0

Essayé à la fois onChange = {this.handleOnChange.bind (this)} (qui enregistre un avertissement qui réagissent à la fonction de liaison automatique pour vous) et handleOnChange: _.compose (changeStateOf ('input'), inputValue) .bind (this). Mais cela ne fonctionne pas – Ahmed

Répondre

2

Je suppose que son travail non pas parce que la valeur de this pourrait être lié à _ que vous utilisez pour appeler la fonction curry. Et la fonction curry écrit le rappel en utilisant la syntaxe flèche qui lie automatiquement la valeur de this à _

+0

Déjà essayé, ils ne sont pas:/ – Ahmed

+0

je suppose que cela ne fonctionne pas parce que la valeur de ceci pourrait être lié avec '_' que vous utilisez pour appeler la fonction curry . Et la fonction curry écrit le rappel en utilisant la syntaxe de la flèche qui lie automatiquement la valeur de ceci à '_' – amritdevilo

+0

Essayé de supprimer les fonctions de la flèche et d'utiliser des fonctions simples. Mais ne fonctionne toujours pas ... – Ahmed