@ant-design/react-native
Version:
基于蚂蚁金服移动设计规范的 React Native 组件库
1 lines • 2.3 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports.default=useFrameState;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _raf=_interopRequireDefault(require("rc-util/es/raf"));var React=_interopRequireWildcard(require("react"));function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}function useFrameState(defaultValue){var _React$useState=React.useState(defaultValue),_React$useState2=(0,_slicedToArray2.default)(_React$useState,2),value=_React$useState2[0],setValue=_React$useState2[1];var frameRef=(0,React.useRef)(null);var batchRef=(0,React.useRef)([]);var destroyRef=(0,React.useRef)(false);React.useEffect(function(){destroyRef.current=false;return function(){destroyRef.current=true;_raf.default.cancel(frameRef.current);frameRef.current=null;};},[]);function setFrameValue(updater){if(destroyRef.current){return;}if(frameRef.current===null){batchRef.current=[];frameRef.current=(0,_raf.default)(function(){frameRef.current=null;setValue(function(prevValue){var current=prevValue;batchRef.current.forEach(function(func){current=func(current);});return current;});});}batchRef.current.push(updater);}return[value,setFrameValue];}