DatePicker (material-ui-picker) onChange не может передать значение событию onChange в избыточной форме - PullRequest
0 голосов
/ 11 января 2019

Интеграция DatePicker из материала-пользовательского интерфейса с избыточной формой.

DatePicker onChange не может передать текущее значение в onChange в редукционной форме, код ниже для справки

helper.js = >>> Упаковщик DatePicker

export const DatePickerField = ({
  label,
  input: { onChange, value, name }, 
  meta: { error, form }, 
  minDate,
  maxDate,
  dispatch  
}) => (
    <DatePicker      
      name={name}      
      label={label}
      value={value}
      helperText={error}
      minDate={minDate}
      maxDate={maxDate}
      error={Boolean(error)}
      onChange={onChange}     
      onError={(_, error) =>
        dispatch(formActions.stopSubmit(form, { [name]: error }))
      }
      disablePast      
      format={'dd.MM.yyyy'}
    />
  )

component.js = >> Redux-form компонент

import { DatePickerField } from 'utils/helper'

     <Field
        name={endDate}        
        component={DatePickerField}       
        onChange={value =>
          store.dispatch(maxDateChange(value))
        }       
      />

Ожидаемый результат: =====================

action @@redux-form/CHANGE
meta: {…}, payload: Sat Jan 19 2019 00:00:00 GMT+0200 (Eastern European Standard Time)}

action     {type: "@@invoice/MAX_DATE_CHANGE", value: Sat Jan 19 2019 00:00:00 GMT+0200 (Eastern European Standard Time)}

Фактический результат: =======================

action @@invoice/MAX_DATE_CHANGE
value: {preventDefault: ƒ} <--value should be DatePicker current value.


action {type: "@@redux-form/CHANGE", meta: {…}, 
payload: Sat Jan 19 2019 15:49:00 GMT+0200 (Eastern European Standard Time)}

1 Ответ

0 голосов
/ 11 января 2019

Если вы посмотрите на документы для Field onChange, вы увидите, что первый параметр - event, второй - значение. Кроме того, оно будет вызвано до отправки события @@redux-form/CHANGE, поскольку оно позволяет отменить это событие.

...