更新反应日期的状态

updating the state for react-dates

我正在尝试使用 airbnb react-dates 如下:

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);

我正在使用 recompose withState 来更新日期和焦点状态。但是,我收到一条错误消息,指出 setIsFocused 不是函数。

任何反馈将不胜感激。

实际上你有两个同名的变量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>
     )}
   />
}

对了,我也把onDateChangeonFocusChange改成了

onDateChange={props.setDate}

onFocusChange={props.setIsFocused} 

因为创建额外的箭头函数在这里没有用