shineout
Version:
Shein 前端组件库
89 lines (67 loc) • 2.53 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var React = _interopRequireWildcard(require("react"));
var _shallowEqual = _interopRequireDefault(require("../utils/shallowEqual"));
var Field =
/*#__PURE__*/
function (_React$Component) {
(0, _inheritsLoose2.default)(Field, _React$Component);
function Field(props) {
var _this;
_this = _React$Component.call(this, props) || this;
_this.handleChange = _this.handleChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); // this.cacheChildren = undefined
// this.cacheElement = null
return _this;
}
var _proto = Field.prototype;
_proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
var options = this.props.cache ? {
skip: ['children']
} : {};
return !(0, _shallowEqual.default)(this.props, nextProps, options);
};
_proto.handleChange = function handleChange(value) {
if (value && value.nativeEvent) {
// eslint-disable-next-line
value = value.target.value;
}
this.props.onChange(value);
};
_proto.render = function render() {
var _this$props = this.props,
children = _this$props.children,
value = _this$props.value,
error = _this$props.error,
disabled = _this$props.disabled;
if (typeof children === 'function') {
return children({
value: value,
error: error,
onChange: this.handleChange,
disabled: disabled
});
}
if (React.isValidElement(children)) {
return React.cloneElement(children, {
value: value,
error: error,
onChange: this.handleChange,
disabled: disabled || children.props && children.props.disabled
});
}
console.error(new Error('Form.Field expect a single ReactElement or a function.'));
return null;
};
return Field;
}(React.Component);
(0, _defineProperty2.default)(Field, "defaultProps", {
cache: false
});
var _default = Field;
exports.default = _default;