UNPKG

dora-ui

Version:

A React.js Mobile UI Library

62 lines (51 loc) 2.06 kB
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized"; import _inherits from "@babel/runtime/helpers/esm/inherits"; import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; /* eslint-disable @typescript-eslint/no-unused-vars */ import { Component } from 'react'; import warning from 'warning'; import { withDefaultProps, isBoolean, isFunction } from '../utils'; var defaultProps = { defaultToggled: false, afterToggled: function afterToggled(flag) {} }; // 交叉类型 属性全部变成了必填 抹去了组件内部默认属性可能为undefined的情况 var Toggler = /*#__PURE__*/ function (_Component) { _inherits(Toggler, _Component); function Toggler(props) { var _this; _classCallCheck(this, Toggler); _this = _possibleConstructorReturn(this, _getPrototypeOf(Toggler).call(this, props)); _defineProperty(_assertThisInitialized(_this), "onToggle", function (flag) { var afterToggled = _this.props.afterToggled; _this.setState(function (prevState) { return { toggled: isBoolean(flag) ? flag : !prevState.toggled }; }, function () { afterToggled(_this.state.toggled); }); }); _this.state = { toggled: props.defaultToggled }; return _this; } _createClass(Toggler, [{ key: "render", value: function render() { var children = this.props.children; warning(isFunction(children), 'Props endTime must be a function which returns JSX.Element'); var toggled = this.state.toggled; return isFunction(children) ? children([toggled, this.onToggle]) : null; } }]); return Toggler; }(Component); export default withDefaultProps(defaultProps, Toggler);