@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
28 lines (27 loc) • 1.1 kB
JavaScript
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
];
}