2016-12-07 11 views
0

私はエラーがあります:ラムダで合成およびカリングを使用するとき、プロパティ 'setState'を未定義に読み込むことができません。ここでramdaを使用して未定義のプロパティ 'setState'を読み取ることができません

は私のコードです:

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

私が試したもの:

  1. handleOnChange
  2. に.bind(これを)追加の引数としてこれを渡しchangeStateOf

I私は何かが欠落していることを知っていますが、問題がどこにあるのか正確にはわかりませ

thisの値は、あなたがカレーの機能を呼び出すために使用している_で拘束される可能性がありますので、私はそのが機能していないと思い、あなたに

+0

'onChange = {this.handleOnChange.bind(this)}'はうまくいくはずです。それはあなたが試みたものですか? –

+0

あなたは 'changeStateOf( 'input')を試しましたか?bind(this)'? –

+0

onChange = {this.handleOnChange.bind(this)}(あなたのために自動バインド機能に反応する警告を記録する)とhandleOnChange:_.compose(changeStateOf( 'input')、inputValue).bind(this)の両方を試みました。しかし、いずれも動作しません。 – Ahmed

答えて

2

ありがとうございます。そして、カリー関数は、矢印構文を使用してコールバックを書き込みます。これは、thisの値を自動的に_にバインドします。

+0

すでに試したことがあります:/ – Ahmed

+0

これは値が「_」でバインドされている可能性があるので、カレー機能。そして、カリー関数は、この値を '_'に自動的にバインドする矢印構文を使用してコールバックを書き込みます。 – amritdevilo

+0

矢印関数を削除して単純な関数を使用しようとしました。しかしまだ動作していません... – Ahmed

関連する問題