обновление состояния для дат реагирования - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь использовать даты реакции airbnb следующим образом:

function NewEntryModal(props) {
  return <Formik
      initialValues={{}}
      onSubmit={(values, actions) => {
      }}
      render={props => (
        <form onSubmit={props.handleSubmit}>
          <SingleDatePicker
            date={props.date} // momentPropTypes.momentObj or null
            onDateChange={date => props.setDate({ date })} // PropTypes.func.isRequired
            focused={props.focused}
            onFocusChange={(focused) => props.setIsFocused(focused)}
            id="string" // PropTypes.string.isRequired,
          />
          <button type="submit">Submit</button>
        </form>
      )}
    />
}

export default compose(
  withState('isFocused', 'setIsFocused', false),
  withState('date', 'setDate', moment()),
)(NewEntryModal);

Я использую рекомбинировать withState для обновления даты и состояний фокусировки.Тем не менее, я получаю сообщение о том, что setIsFocused не является функцией.

Любая обратная связь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 сентября 2018

На самом деле у вас есть две переменные с одинаковым именем props

Я думаю, что это может решить вашу проблему, я использовал параметр деструктурирования для функции render

function NewEntryModal(props) {
   return <Formik
        initialValues={{}}
        onSubmit={(values, actions) => {}}
        render={({handleSubmit}) => (
          <form onSubmit={handleSubmit}>
            <SingleDatePicker
              date={props.date}
              onDateChange={props.setDate}
              focused={props.focused}
              onFocusChange={props.setIsFocused}
              id="string",
            />
            <button type="submit">Submit</button>
         </form>
     )}
   />
}

Кстати, я также изменил onDateChange и onFocusChange на

onDateChange={props.setDate}

onFocusChange={props.setIsFocused} 

потому что создание дополнительных функций стрелок здесь бесполезно

...