Javascript 无法读取属性';设置状态';使用ramda定义未定义的

Javascript 无法读取属性';设置状态';使用ramda定义未定义的,javascript,reactjs,ramda.js,Javascript,Reactjs,Ramda.js,我有一个错误:在使用composition和使用ramda进行转换时,无法读取undefined的属性“setState” 这是我的密码: const changeStateOf = _.curry((stateName, stateValue) => { let obj = {} obj[stateName] = stateValue this.setState(obj) }) const inputValue = (event) => { return eve

我有一个错误:在使用composition和使用ramda进行转换时,无法读取undefined的属性“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>
  }
})
const changeStateOf=\ curry((stateName,stateValue)=>{
设obj={}
obj[stateName]=状态值
此设置状态(obj)
})
常量输入值=(事件)=>{
返回event.target.value
}
const App=React.createClass({
handleOnChange:u0.compose(changeStateOf('input'),inputValue),
/*//这起作用了
更改:功能(事件){
this.setState({input:event.target.value})
},*/
render:function(){
返回
}
})
我尝试的是:

  • 添加.绑定(此)以更改
  • 在changeStateOf中将此作为参数传递
  • 我知道我遗漏了一些东西,但看不出问题到底出在哪里



    谢谢

    我想它不起作用了,因为
    这个
    的值可能与您用来调用curry函数的
    \uu
    绑定在一起。curry函数使用箭头语法编写回调函数,该语法自动将
    this
    的值绑定到

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

    看起来
    onChange={this.handleOnChange.bind(this)}
    应该可以工作。这就是您尝试过的吗?您尝试过
    changeStateOf('input').bind(this)
    ?尝试过onChange={this.handleOnChange.bind(this)}(它记录了一个警告,为您响应自动绑定函数)和handleOnChange:\ uu.compose(changeStateOf('input'),inputValue).bind(this)。但是没有works@TelmanAgababov是的,也试过了:/看起来
    onChange={this.handleOnChange.bind(this)}
    应该可以工作。这就是您尝试过的吗?您尝试过
    changeStateOf('input').bind(this)
    ?尝试过onChange={this.handleOnChange.bind(this)}(它记录了一个警告,为您响应自动绑定函数)和handleOnChange:\ uu.compose(changeStateOf('input'),inputValue).bind(this)。但是没有works@TelmanAgababov是的,也尝试了此方法:/i我想它不起作用,因为此方法的值可能与用于调用curry函数的“”绑定。curry函数使用arrow语法编写回调函数,该语法会自动将其值绑定到“尝试删除arrow函数并使用简单函数”。但是仍然不起作用…你把这个简单函数和所需的绑定在一起了吗?调用这个简单函数时也要用call()函数调用它好的,它现在起作用了,我不知道为什么!我使用了普通的函数定义,它在没有绑定的情况下工作。(这里发生了一些神奇的事情…)如果我帮了你…为什么不试试upvoting呢?我想它不起作用,因为它的值可能与你用来调用curry函数的“”绑定。curry函数使用arrow语法编写回调函数,该语法会自动将其值绑定到“尝试删除arrow函数并使用简单函数”。但是仍然不起作用…你把这个简单函数和所需的绑定在一起了吗?调用这个简单函数时也要用call()函数调用它好的,它现在起作用了,我不知道为什么!我使用了普通的函数定义,它在没有绑定的情况下工作。(这里发生了一些魔法…)所以如果我帮了你…你为什么不试试投票呢