0

我正在尝试按如下方式使用 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不是一个函数。

任何反馈将不胜感激。

4

1 回答 1

0

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

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

于 2018-09-12T17:25:42.840 回答