@zohodesk/hooks
Version:
Unified Component Library - Hooks
31 lines • 979 B
JavaScript
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 useTextBox() {
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
let customReducer = arguments.length > 1 ? arguments[1] : undefined;
const {
value = '',
defaultValue = ''
} = 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
};
}