无法使用ramda读取未定义的属性“setState”

时间:2016-12-07 21:58:46

标签: javascript reactjs ramda.js

我有错误:使用合成和使用ramda进行curry时,无法读取未定义的属性'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. 将.bind(this)添加到handleOnChange
  2. 将此作为参数传递给changeStateOf
  3. 我知道我错过了一些东西,但却看不出问题究竟在哪里。

    谢谢

1 个答案:

答案 0 :(得分:2)

我猜它不起作用,因为this的值可能与您用来调用咖喱函数的_绑定。咖喱函数使用箭头语法编写回调函数,该语法会自动将this的值绑定到_