更新反应日期的状态

时间:2018-09-12 15:20:31

标签: reactjs recompose 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不是一个函数。

任何反馈将不胜感激。

1 个答案:

答案 0 :(得分:0)

实际上,您有两个具有相同名称props的变量

我认为这可以解决您的问题,我为render函数使用了structuring参数

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} 

因为在此处创建其他箭头功能没有用