rc-hooks
Version:
React Hooks Library.
34 lines (33 loc) • 935 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
/**
* 只在依赖更新时执行的 useLayoutEffect Hook。
*
* @param {Function} effect 可执行函数。
* @param {Array} [deps] 可选项,传入依赖变化的对象。
* @example
* const [count, setCount] = useState(0);
*
* useUpdateLayoutEffect(() => {
* // 初次加载不触发,再更新后触发
* // do something
*
* return () => {
* // 卸载时触发
* };
* }, [count]);
*/
var useUpdateLayoutEffect = function (effect, deps) {
var isMounted = (0, react_1.useRef)(false);
(0, react_1.useLayoutEffect)(function () {
if (!isMounted.current) {
isMounted.current = true;
}
else {
return effect();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, deps);
};
exports.default = useUpdateLayoutEffect;