@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
38 lines (37 loc) • 1.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "usePropsValue", {
enumerable: true,
get: function() {
return usePropsValue;
}
});
var _react = require("react");
var _useforceupdate = require("./use-force-update");
function usePropsValue(param) {
var value = param.value, defaultValue = param.defaultValue, finalValue = param.finalValue, _param_onChange = param.onChange, onChange = _param_onChange === void 0 ? function onChange(value) {} : _param_onChange;
var forceUpdate = (0, _useforceupdate.useForceUpdate)();
var dfValue = defaultValue !== undefined ? defaultValue : finalValue;
var stateRef = (0, _react.useRef)(value !== undefined ? value : dfValue);
if (value !== undefined) {
stateRef.current = value;
}
var setState = (0, _react.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
];
}
;