@antdp/antdp-ui
Version:
基于antd封装的组件
127 lines (126 loc) • 4.49 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _valueUtil = require("rc-field-form/lib/utils/valueUtil");
var Store = /*#__PURE__*/(0, _createClass2["default"])(function Store() {
var _this = this;
(0, _classCallCheck2["default"])(this, Store);
// 保存状态
(0, _defineProperty2["default"])(this, "store", {});
//保存组件
(0, _defineProperty2["default"])(this, "componentLists", []);
// 初始化
(0, _defineProperty2["default"])(this, "init", function (entery) {
var _ref = entery.props || {},
initialValue = _ref.initialValue;
// 初始值
if (initialValue !== undefined) {
// 获取保存路径
var pathName = entery.getNamePath();
if (pathName) {
_this.store = (0, _valueUtil.setValue)(_this.store, pathName, initialValue);
}
}
});
// 挂载之后 组件保存
(0, _defineProperty2["default"])(this, "register", function (entery) {
_this.componentLists.push(entery);
var _ref2 = entery.props || {},
initialValue = _ref2.initialValue;
if (initialValue !== undefined) {
entery.refresh();
}
return function () {
// 组件卸载进行组件删除
_this.componentLists = _this.componentLists.filter(function (item) {
return item !== entery;
});
// 保存的值进行删除
var pathName = entery.getNamePath();
if (pathName) {
_this.store = (0, _valueUtil.setValue)(_this.store, pathName, undefined);
}
};
});
// 获取值
(0, _defineProperty2["default"])(this, "getStoreState", function (pathName) {
if (pathName) {
// 如果有路径,则根据路径获取值
return (0, _valueUtil.getValue)(_this.store, pathName);
}
return _this.store;
});
(0, _defineProperty2["default"])(this, "getComponents", function () {
return _this.componentLists;
});
(0, _defineProperty2["default"])(this, "getStore", function () {
return {
getComponents: _this.getComponents,
getStoreState: _this.getStoreState,
getItemStore: _this.getItemStore,
setInitialValues: _this.setInitialValues,
updateValue: _this.updateValue
};
});
// 子项内的方法
(0, _defineProperty2["default"])(this, "getItemStore", function () {
return {
init: _this.init,
register: _this.register,
getStoreState: _this.getStoreState,
updateValue: _this.updateValue,
getValue: _this.getValue
};
});
(0, _defineProperty2["default"])(this, "setInitialValues", function (initialValues, init) {
if (init) {
_this.store = Object.assign({}, _this.store, initialValues);
}
});
// 更新值
(0, _defineProperty2["default"])(this, "updateValue", function (pathName, value) {
var path = Array.isArray(pathName) ? pathName : [pathName];
_this.store = (0, _valueUtil.setValue)(_this.store, path, value);
// 通知对应的组件进行强制更新
_this.notifyObservers(path);
});
// 获取值
(0, _defineProperty2["default"])(this, "getValue", function (pathName) {
var path = Array.isArray(pathName) ? pathName : [pathName];
return (0, _valueUtil.getValue)(_this.store, path);
});
// 通知更新组件
(0, _defineProperty2["default"])(this, "notifyObservers", function (pathName) {
_this.componentLists.forEach(function (_ref3) {
var refresh = _ref3.refresh,
getNamePath = _ref3.getNamePath;
var currentPath = getNamePath();
// 判断路径相同的进行值更新
if (currentPath.join('') === pathName.join('')) {
refresh();
}
});
});
});
/** 状态管理 */
var useStore = function useStore(form) {
var formRef = _react["default"].useRef();
if (!formRef.current) {
if (form) {
formRef.current = form;
} else {
var formStore = new Store();
formRef.current = formStore.getStore();
}
}
return [formRef.current];
};
var _default = exports["default"] = useStore;
module.exports = exports.default;