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

Cannot read property 'setState' of undefined using ramda

我遇到错误:使用 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. 将 .bind(this) 添加到 handleOnChange
  2. 将其作为参数传递给 changeStateOf

我知道我遗漏了一些东西,但看不出问题到底出在哪里。

谢谢

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