@vgbire/react-keep-alive
Version:
React keepAlive
20 lines (19 loc) • 688 B
JavaScript
import { useEffect, useState, useLayoutEffect } from 'react';
import { createPortal } from 'react-dom';
export const Component = ({ name, show, children, to, style }) => {
const [div] = useState(() => document.createElement('div'));
useEffect(() => {
// 清空原来的style内联样式
div.style.cssText = '';
Object.keys(style || {}).forEach((key) => {
div.style[key] = style[key];
});
}, [style]);
useLayoutEffect(() => {
var _a;
if (show) {
(_a = to.current) === null || _a === void 0 ? void 0 : _a.replaceChildren(div);
}
}, [show]);
return createPortal(children, div, name);
};