我正在使用带有bind()的react-bootstrap-datetimerangepicker库来从日历中获取所选日期,但是此库的'onApply'函数通过2个params(事件,选择器)并且在'预定义'中我没有获得startDate和endDate,假设进入第二个参数。没有绑定它不工作
<DatetimeRangePicker
timePicker
showDropdowns
timePicker24Hour
onApply={this.handleChange.bind(this, 'predefined')} />
handleChange(event, picker) {
this.props.sendDateRanges(payload);
}
https://github.com/luqin/react-bootstrap-datetimerangepicker
答案 0 :(得分:1)
您需要将this
绑定到handleChange函数,以使其具有词法范围。否则,handleChange
没有组件this
的概念,因为它是块作用域。在您的情况下,绑定的第二个/后续参数是不必要的。您上面所做的只是将字符串'predefined'预先添加到arguments
数组中。相反,只需将绑定函数传递给onApply prop。
onApply={this.handleChange.bind(this)}
如果您使用es6类来定义组件,则常见的模式是在构造函数中预绑定所有事件处理程序和函数。
constructor(props) {
super(props)
this.handleChange = this.handleChange.bind(this)
}
handleChange(event, picker) {
//code
}
render() {
return <div onChange={this.handleChange} />
}
如果你想变得更加漂亮,你可以使用箭头函数语法隐式绑定词法范围。无需在任何地方调用bind。
handleChange = (event, picker) => {
//code
}
render() {
return <div onChange={this.handleChange} />
}