linkmore-design
Version:
🌈 🚀lm组件库。🚀
57 lines (55 loc) • 1.76 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _context = require("./context");
var _useForkRef = _interopRequireDefault(require("../hooks/useForkRef"));
const VirtualRow = /*#__PURE__*/_react.default.memo(({
children,
pref,
...resetProps
}, ref) => {
const {
state,
dispatch
} = (0, _context.useStore)();
const {
rowHeight,
totalLen
} = state;
const trRef = (0, _react.useRef)(null);
// 列长度
const columnsLen = (0, _react.useMemo)(() => {
return children?.length ?? 0;
}, [children]);
(0, _react.useEffect)(() => {
if (state.columnsLen !== columnsLen) {
dispatch({
type: 'changeColumnsLen',
columnsLen: columnsLen ?? 0
});
}
}, [columnsLen, dispatch, state.columnsLen]);
(0, _react.useEffect)(() => {
const initHeight = tempRef => {
if (tempRef?.current?.offsetHeight && !rowHeight && totalLen) {
const tempRowHeight = tempRef?.current?.offsetHeight ?? 0;
dispatch({
type: 'initHeight',
rowHeight: tempRowHeight
});
}
};
initHeight(trRef);
}, [trRef, dispatch, rowHeight, totalLen, ref]);
return /*#__PURE__*/_react.default.createElement("tr", (0, _extends2.default)({}, resetProps, {
ref: (0, _useForkRef.default)(pref, trRef)
}), children);
});
var _default = VirtualRow;
exports.default = _default;