Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问事件函数内部的状态?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何访问事件函数内部的状态?

Javascript 如何访问事件函数内部的状态?,javascript,reactjs,Javascript,Reactjs,我有一个react组件来处理一些挑选日期的事情。我的jsx非常简单,您可以在下面看到: state = { date: new Date(), }; render() { return ( //left out for the sake of brevity... Date: {this.state.date.toString()} <Calendar onChange={dateChange} activeStartDate={th

我有一个react组件来处理一些挑选日期的事情。我的jsx非常简单,您可以在下面看到:

  state = { 
    date: new Date(),
  };

  render() {
    return (
    //left out for the sake of brevity...
    Date: {this.state.date.toString()}
    <Calendar onChange={dateChange} activeStartDate={this.state.date} />
    //...
  )}

  function dateChange(date) {
    console.log(date)
    console.log(this)
  }
但这将返回错误
无法读取未定义的
的属性“bind”


我如何在我的
dateChange
函数中使用这个以及扩展我的当前状态?

在类中定义它,作为类方法,而不使用函数词

class yourClass extends React.Component {
    constructor(props) {
        super(props);
        this.state = { date: new Date() };
        this.dateChange = this.dateChange.bind(this);
      }

    render() {
        return (
        //left out for the sake of brevity...
        <Calendar onChange={this.dateChange} activeStartDate={this.state.date} />
        //...
        );
    }

    dateChange(date) {
        console.log(date);
        console.log(this);
    }
}
class您的类扩展了React.Component{
建造师(道具){
超级(道具);
this.state={date:new date()};
this.dateChange=this.dateChange.bind(this);
}
render(){
返回(
//为了简洁起见被省略了。。。
//...
);
}
日期更改(日期){
控制台日志(日期);
console.log(this);
}
}
这样,您就可以使用
this.dateChange=this.dateChange.bind(this)
this
绑定到您的类

我也把状态移到了你的构造器;这是它通常初始化的地方


我删除了
Date:{this.state.Date.toString()}
,因为我不确定你想用它做什么(它是另一个组件吗?)-无论如何,我认为它不会影响对你问题的回答

当我尝试这个时,我得到错误:
预期的意外标记”
在新的
日期更改
函数声明中,我添加了一些缺少的分号;每个语句的末尾都应该有一个。Hrrm,现在它从my
onChange={dateChange}
代码中抛出
dateChange未定义
。(还有,我没有投反对票-这很有帮助)啊-只是把它改成了
this.dateChange
,它成功了-谢谢!是的,对不起,在复制粘贴上我没有更新它。答案更新-我很高兴它有帮助!
class yourClass extends React.Component {
    constructor(props) {
        super(props);
        this.state = { date: new Date() };
        this.dateChange = this.dateChange.bind(this);
      }

    render() {
        return (
        //left out for the sake of brevity...
        <Calendar onChange={this.dateChange} activeStartDate={this.state.date} />
        //...
        );
    }

    dateChange(date) {
        console.log(date);
        console.log(this);
    }
}