linkmore-design
Version:
🌈 🚀lm组件库。🚀
46 lines (42 loc) • 1.37 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reducer = _interopRequireWildcard(require("./reducer"));
var _fns = _interopRequireDefault(require("../fns"));
var _Wrapper = _interopRequireDefault(require("./Wrapper"));
const LmBox = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
const initialState = (0, _react.useMemo)(() => (0, _reducer.initialState)(), []);
const [state, dispatch] = (0, _react.useReducer)(_reducer.default, initialState);
// 获取核心Methods
const {
CoreMethds,
RefMethods
} = (0, _fns.default)({
state,
dispatch,
props
});
// 组件实例
const instance = (0, _react.useMemo)(() => ({
...props,
...CoreMethds,
...RefMethods,
state,
dispatch
}), [props, RefMethods, state, dispatch]);
// 向外暴露出的方法
(0, _react.useImperativeHandle)(ref, () => ({
getState: () => state,
...RefMethods
}));
return /*#__PURE__*/_react.default.createElement(_Wrapper.default, {
instance: instance
});
});
var _default = LmBox;
exports.default = _default;
;