У меня есть следующие поляпытается обновить поле с помощью Redux-формы
import React, { Component } from 'react'
import { Field } from 'redux-form'
import RDateRangePicker from '../../../../components/RDateRangePicker/RDateRangePicker'
export default class DateRange extends Component {
constructor (props) {
super(props)
this.state = { dateRangeEmpty: true }
this.handleChange = this.handleChange.bind(this)
}
handleChange (event) {
this.setState({ dateRangeEmpty: true })
}
render() {
let cssClassName = this.state.dateRangeEmpty
? 'form-group has-feedback has-error' : 'form-group has-feedback has-error'
return (
<div className={cssClassName}>
<div className="col-sm-12">Date range:</div>
<div className="col-sm-12">
<Field name="dateRange"
component={RDateRangePicker}
className="form-control"
onChange={this.handleChange}
/>
</div>
</div>
)
}
}
но onChange
никогда не срабатывает. Есть идеи?
import React, { Component } from 'react'
import DateRangePicker from 'react-bootstrap-daterangepicker'
import moment from 'moment'
import './RDateRangePicker.scss'
export default class RDateRangePicker extends Component {
_formatValue (value) {
return value.startDate.isSame(value.endDate, 'day')
? value.startDate.format('DD/MM/YYYY')
: value.startDate.format('DD/MM/YYYY') + ' - ' + value.endDate.format('DD/MM/YYYY')
}
_handleEvent (event, picker) {
const { input: { onChange } } = this.props
this._input.value = this._formatValue(picker)
onChange({ startDate: picker.startDate, endDate: picker.endDate })
}
render() {
const ranges = {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment()],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
}
return (
<DateRangePicker ranges={ranges} onApply={::this._handleEvent}>
<input
type="text"
className="form-control"
readOnly
style={{ backgroundColor: '#fff' }}
ref={(c) => { this._input = c }}
required
placeholder="Ex. 09/01/2017 - 13/01/2017"
/>
<span className="glyphicon glyphicon-calendar form-control-feedback" aria-hidden="true" />
</DateRangePicker>
)
}
}
на основе ответа shixukai'S, onInputChange не является действительной опорой для поля. вам может потребоваться иметь оболочку класса RDateRangePicker. И установите onInputChange в RDateRangePicker в этом классе-оболочке. – Mox
попробуйте изменить onInputChange вместо onChange. – Mox
Выполнено, но я не работаю. – Jean