@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
28 lines (27 loc) • 938 B
JavaScript
import React__default, { useRef, useCallback } from "react";
function useForceUpdate() {
const [, updateState] = React__default.useState();
return React__default.useCallback(() => updateState({}), []);
}
function usePropsValue({ value, defaultValue, finalValue, onChange = (value2) => {
} }) {
const forceUpdate = useForceUpdate();
const dfValue = defaultValue !== void 0 ? defaultValue : finalValue;
const stateRef = useRef(value !== void 0 ? value : dfValue);
if (value !== void 0) {
stateRef.current = value;
}
const setState = useCallback((v, forceTrigger = false) => {
const 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];
}
export {
useForceUpdate as a,
usePropsValue as u
};