UNPKG

@zohodesk/hooks

Version:

Unified Component Library - Hooks

32 lines 1.01 kB
import { useEffect } from 'react'; import useEffectCallOnlyAfterState from "../utils/useEffectCallOnlyAfterState"; import useEvent from "../utils/useEvent"; import useCommonReducer from "../utils/useCommonReducer"; import reducer from "./reducer"; import { default as actionChange } from "./actions/handleChange"; import bindActions from "../utils/bindActions"; export default function useTextArea() { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let customReducer = arguments.length > 1 ? arguments[1] : undefined; const { defaultValue = '', value = '' } = props; const { state, dispatch } = useCommonReducer(reducer, customReducer, value || defaultValue); const actions = bindActions({ actionChange }, dispatch); useEffectCallOnlyAfterState(() => { actions.actionChange(value); }, [value]); const handleChange = useEvent(e => { actions.actionChange(e.target.value); }); return { value: state, handleChange }; }