UNPKG

@shakacode/recompose

Version:

A React utility belt for function components and higher-order components

47 lines (46 loc) 2.17 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = require("react"); var _setDisplayName = _interopRequireDefault(require("./setDisplayName")); var _wrapDisplayName = _interopRequireDefault(require("./wrapDisplayName")); var withState = function withState(stateName, stateUpdaterName, initialState) { return function (BaseComponent) { var WithState = /*#__PURE__*/function (_Component) { function WithState() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _Component.call.apply(_Component, [this].concat(args)) || this; _this.state = { stateValue: typeof initialState === 'function' ? initialState(_this.props) : initialState }; _this.updateStateValue = function (updateFn, callback) { return _this.setState(function (_ref) { var stateValue = _ref.stateValue; return { stateValue: typeof updateFn === 'function' ? updateFn(stateValue) : updateFn }; }, callback); }; return _this; } (0, _inheritsLoose2["default"])(WithState, _Component); var _proto = WithState.prototype; _proto.render = function render() { var _extends2; return /*#__PURE__*/(0, _react.createElement)(BaseComponent, (0, _extends3["default"])({}, this.props, (_extends2 = {}, _extends2[stateName] = this.state.stateValue, _extends2[stateUpdaterName] = this.updateStateValue, _extends2))); }; return WithState; }(_react.Component); if (process.env.NODE_ENV !== 'production') { return (0, _setDisplayName["default"])((0, _wrapDisplayName["default"])(BaseComponent, 'withState'))(WithState); } return WithState; }; }; var _default = exports["default"] = withState;