linkmore-design
Version:
🌈 🚀lm组件库。🚀
44 lines (42 loc) • 1.49 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import React, { useMemo, useRef, useReducer, forwardRef, useImperativeHandle } from 'react';
import reducer, { initialState as initReducerState } from "./reducer";
import useCoreOptions from "../fns";
import Wrapper from "./Wrapper";
var Root = /*#__PURE__*/forwardRef(function (props, ref) {
var bodyRef = useRef(null);
var initialState = useMemo(function () {
return initReducerState(props);
}, []);
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,
bodyRef: bodyRef
}),
CoreMethods = _useCoreOptions.CoreMethods,
RefMethods = _useCoreOptions.RefMethods;
var instance = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), CoreMethods), RefMethods), {}, {
bodyRef: bodyRef,
state: state,
dispatch: dispatch
});
// 向外暴露出的方法
useImperativeHandle(ref, function () {
return _objectSpread(_objectSpread({}, RefMethods), {}, {
getState: function getState() {
return state;
}
});
});
return /*#__PURE__*/React.createElement(Wrapper, {
instance: instance
});
});
export default Root;