linkmore-design
Version:
🌈 🚀lm组件库。🚀
45 lines (42 loc) • 1.47 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import React, { useMemo, useReducer, forwardRef, useImperativeHandle } from 'react';
import reducer, { initialState as initReducerState } from "./reducer";
import useCoreOptions from "../fns";
import Wrapper from "./Wrapper";
var LmBox = /*#__PURE__*/forwardRef(function (props, ref) {
var initialState = useMemo(function () {
return initReducerState();
}, []);
var _useReducer = useReducer(reducer, initialState),
_useReducer2 = _slicedToArray(_useReducer, 2),
state = _useReducer2[0],
dispatch = _useReducer2[1];
// 获取核心Methods
var _useCoreOptions = useCoreOptions({
state: state,
dispatch: dispatch,
props: props
}),
CoreMethds = _useCoreOptions.CoreMethds,
RefMethods = _useCoreOptions.RefMethods;
// 组件实例
var instance = useMemo(function () {
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), CoreMethds), RefMethods), {}, {
state: state,
dispatch: dispatch
});
}, [props, RefMethods, state, dispatch]);
// 向外暴露出的方法
useImperativeHandle(ref, function () {
return _objectSpread({
getState: function getState() {
return state;
}
}, RefMethods);
});
return /*#__PURE__*/React.createElement(Wrapper, {
instance: instance
});
});
export default LmBox;