Javascript 反应本机:可能未处理的承诺拒绝:找不到变量:名称

Javascript 反应本机:可能未处理的承诺拒绝:找不到变量:名称,javascript,reactjs,react-native,Javascript,Reactjs,React Native,在尝试制作一款要求3次约会的应用程序时,我遇到了一个问题: 我有这个: onDateChange = (state) => (event, value) => { this.setState({ [state]: name }); } 这被称为: <DatePicker dateMes={this.state.dateMes} mode="date" placeholder="select date" forma

在尝试制作一款要求3次约会的应用程序时,我遇到了一个问题:

我有这个:

onDateChange = (state) => (event, value) => {
    this.setState({
        [state]: name
    });
}
这被称为:

<DatePicker
    dateMes={this.state.dateMes}
    mode="date"
    placeholder="select date"
    format="DD-MM-YYYY"
    minDate="01-01-1950"
    maxDate="01-01-2050"
    androidMode="spinner"
    showIcon={false}
    onDateChange={this.onDateChange('dateMes')}
/>

错误消失了,但日期没有用datepicker更改。

我实际上只需要使用datepicker官方github。他们有一个例子,他们做了如下事情:

<DatePicker
    date={this.state.dateMes}  //it was dateMes=..., wich just meant nothing
    mode="date"
    placeholder="select date"
    format="DD-MM-YYYY"
    minDate="01-01-1950"
    maxDate="01-01-2050"
    androidMode="spinner"
    showIcon={false}
    onDateChange={(dateMes) => { this.setState({ dateMes: dateMes }); }}
/>
没有任何功能


而且,好吧,它起作用了。仅此而已:。

让我从某个角度来看,OnDateChange prop接收一个函数作为回调函数,您可以很好地分配它,但当调用回调时,“this”的引用已更改,它无法找到由类限定的变量

现在在react本机示例中,他们使用了Arrow函数,该函数在词汇上限定了“this”的范围,这解释了为什么您可以找到类变量,因为“this”仍然引用组件。
参考:

完成设置状态后,必须在构造函数中明确定义它。请尝试此操作

<DatePicker
date={this.state.dateMes}  //it was dateMes=..., wich just meant nothing
mode="date"
placeholder="select date"
format="DD-MM-YYYY"
minDate="01-01-1950"
maxDate="01-01-2050"
androidMode="spinner"
showIcon={false}
 onDateChange={(date) => {this.setState({date: date})}}/>

constructor(props) {
    super(props);
  this.state = {
                date:''

  };
}

在参数中有值,但在setState调用中使用了name。这确实是一个相当愚蠢的错误。虽然这个错误不再弹出,但是日期仍然没有改变:/。谢谢你的解释,它确实帮助我理解了它是如何工作的。我对react native和js仍然是新手,所以我在语法方面有很多问题。当我有时间时,我将阅读箭头功能页!:当然,您也可以使用bind函数。也要经历这个过程,直到那个时候,每个回调函数都要使用箭头函数。干杯仅供参考,dateMes=>{this.setState{dateMes:dateMes};}是一个匿名函数。
<DatePicker
date={this.state.dateMes}  //it was dateMes=..., wich just meant nothing
mode="date"
placeholder="select date"
format="DD-MM-YYYY"
minDate="01-01-1950"
maxDate="01-01-2050"
androidMode="spinner"
showIcon={false}
 onDateChange={(date) => {this.setState({date: date})}}/>

constructor(props) {
    super(props);
  this.state = {
                date:''

  };
}