import {useEffect} from 'react'
import PropTypes from 'prop-types'
import {FormProvider, useForm} from 'react-hook-form'

const ConnectionFormProvider = ({children, defaultValues}) => {
  const methods = useForm()
  const {reset} = methods

  // 解决表单不能根据默认值重新填充的问题
  // https://github.com/react-hook-form/react-hook-form/discussions/2282#discussioncomment-39308
  useEffect(() => {
    reset(defaultValues)
  }, [defaultValues.id])

  return (
    <FormProvider {...methods}>
      {children}
    </FormProvider>
  )
}

ConnectionFormProvider.propTypes = {
  defaultValues: PropTypes.object,
  children: PropTypes.any.isRequired,
}

ConnectionFormProvider.defaultProps = {
  defaultValues: {},
}

export default ConnectionFormProvider