UNPKG

@bluecateng/auto-forms

Version:
45 lines 939 B
import { useCallback, useContext } from 'react'; import FormContext from './FormContext'; export default (name => { const { state, dispatch, rules } = useContext(FormContext); const rule = rules[name]; const value = state.values[name]; const error = state.errors[name]; const extra = state.extras[name]; const setValue = useCallback(value => { dispatch({ type: 'SET_VALUE', name, payload: value }); if (rule) { dispatch({ type: 'SET_ERROR', name, payload: rule(value) }); } }, [name, rule, dispatch]); const setError = useCallback(payload => dispatch({ type: 'SET_ERROR', name, payload }), [name, dispatch]); const setExtra = useCallback(payload => dispatch({ type: 'SET_EXTRA', name, payload }), [name, dispatch]); return { value, error, extra, setValue, setError, setExtra }; });