UNPKG

remx

Version:
72 lines (53 loc) 3.11 kB
var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[typeof Symbol==='function'?Symbol.iterator:'@@iterator'](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"])_i["return"]();}finally{if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if((typeof Symbol==='function'?Symbol.iterator:'@@iterator')in Object(arr)){return sliceIterator(arr,i);}else{throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}();var _react=require('react');var _react2=_interopRequireDefault(_react); var _mobx=require('mobx');var mobx=_interopRequireWildcard(_mobx); var _logger=require('./logger');var Logger=_interopRequireWildcard(_logger); var _useUpdate=require('../utils/useUpdate');var _useUpdate2=_interopRequireDefault(_useUpdate); var _globalState=require('./globalState');function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++){arr2[i]=arr[i];}return arr2;}else{return Array.from(arr);}} var useConnect=function useConnect(mapStateToProps){var dependencies=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var _React$useState= _react2.default.useState({}),_React$useState2=_slicedToArray(_React$useState,1),mutableState=_React$useState2[0]; var update=(0,_useUpdate2.default)(); var dispose=_react2.default.useMemo( function(){return( mobx.reaction( function(){ Logger.startLoggingMapStateToProps(); mutableState.lastError=undefined; try{ (0,_globalState.incrementRenderingObserverDepth)(); mutableState.returnValue=mapStateToProps.apply(undefined,_toConsumableArray(dependencies)); }catch(err){ console.warn( 'Encountered an uncaught exception that was thrown by mapStateToProps in useConnect hook', err); mutableState.lastError=err; }finally{ (0,_globalState.decrementRenderingObserverDepth)(); } Logger.endLoggingMapStateToProps( 'useConnect hook', mutableState.returnValue); return mutableState.returnValue; }, update, {fireImmediately:false}));}, dependencies); if(mutableState.lastError){ throw mutableState.lastError; } if(mutableState.dispose&&mutableState.dispose!==dispose){ mutableState.dispose(); } mutableState.dispose=dispose; _react2.default.useEffect(function(){return function(){return mutableState.dispose();};},[]); if(!Object.prototype.hasOwnProperty.call(mutableState,'returnValue')){ (0,_globalState.incrementRenderingObserverDepth)(); try{ return mapStateToProps.apply(undefined,_toConsumableArray(dependencies)); }finally{ (0,_globalState.decrementRenderingObserverDepth)(); } } return mutableState.returnValue; }; module.exports={ useConnect:useConnect};