rsuite
Version:
A suite of react components
42 lines (40 loc) • 1.47 kB
JavaScript
'use client';
;
exports.__esModule = true;
exports.default = void 0;
var _react = require("react");
var _utils = require("../../internals/utils");
function useData(props) {
var _props$controlledData = props.controlledData,
controlledData = _props$controlledData === void 0 ? [] : _props$controlledData,
_props$cacheData = props.cacheData,
cacheData = _props$cacheData === void 0 ? [] : _props$cacheData,
onChange = props.onChange;
var _useState = (0, _react.useState)(controlledData),
uncontrolledData = _useState[0],
setData = _useState[1];
var _useState2 = (0, _react.useState)([]),
newData = _useState2[0],
setNewData = _useState2[1];
var data = (0, _react.useMemo)(function () {
return [].concat(uncontrolledData, newData);
}, [newData, uncontrolledData]);
var dataWithCache = (0, _react.useMemo)(function () {
return [].concat(data, cacheData);
}, [data, cacheData]);
// Update the state when the data in props changes
(0, _react.useEffect)(function () {
if (controlledData && !(0, _utils.shallowEqual)(controlledData, uncontrolledData)) {
setData(controlledData);
setNewData([]);
onChange === null || onChange === void 0 || onChange(controlledData);
}
}, [controlledData, uncontrolledData, onChange]);
return {
data: data,
dataWithCache: dataWithCache,
newData: newData,
setNewData: setNewData
};
}
var _default = exports.default = useData;