UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

45 lines (42 loc) 1.47 kB
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;