@ccs-design/rc-pro
Version:
ccs design basic react component
51 lines (43 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useShow;
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
var _react = require("react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* 父调用子组件方法,并传值
* @param funcRef ref对象
* @param options { onShow, onFormart, onHide }
* @returns T 传输的数据
* -- deprecated
*/
function useShow(funcRef, options) {
var ref = (0, _react.useRef)({});
var callBackRef = (0, _react.useRef)();
var onShow = options.onShow,
onFormart = options.onFormart,
onHide = options.onHide;
var onCallback = function onCallback(e) {
callBackRef.current = e;
};
(0, _react.useImperativeHandle)(funcRef, function () {
return {
show: function show(record) {
ref.current = (0, _cloneDeep2.default)(record); // 深拷贝,避免值被修改,造成异常
onShow(ref.current);
},
hide: function hide(data) {
if (onHide) onHide(data);
},
getData: function getData() {
return callBackRef.current;
}
};
});
return {
record: onFormart ? onFormart(ref.current) : ref.current,
onCallback: onCallback
};
}