UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

28 lines (27 loc) 1.1 kB
import { useRef, useCallback } from "react"; import { useForceUpdate } from "./use-force-update"; export function usePropsValue(param) { var value = param.value, defaultValue = param.defaultValue, finalValue = param.finalValue, _param_onChange = param.onChange, onChange = _param_onChange === void 0 ? function(value) {} : _param_onChange; var forceUpdate = useForceUpdate(); var dfValue = defaultValue !== undefined ? defaultValue : finalValue; var stateRef = useRef(value !== undefined ? value : dfValue); if (value !== undefined) { stateRef.current = value; } var setState = useCallback(function(v) { var forceTrigger = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; var prevState = stateRef.current; stateRef.current = v; if (prevState !== stateRef.current || forceTrigger) { forceUpdate(); onChange === null || onChange === void 0 ? void 0 : onChange(v); } }, [ value, onChange ]); return [ stateRef.current, setState ]; }